大家好,快速掌握SHA1、SHA256、MD5等哈希算法工具使用技巧相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于快速掌握SHA1、SHA256、MD5等哈希算法工具使用技巧和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
公共最终静态StringSHA1="SHA1";
公共最终静态StringSHA256="SHA256";
私有静态最终StringTAG="AppSigning";
私有静态最终HashMapmSignMap=new HashMap();
/**
* 返回对应类型的有符号字符串
* @参数上下文
* @参数类型
* @return 因为一个安装包可以被多个签名文件签名,所以返回签名信息列表。
*/
公共静态ArrayListgetSignInfo(上下文上下文,字符串类型){
if (上下文==null || 类型==null) {
返回空值;
}
String packageName=context.getPackageName();
if (包名==null) {
返回空值;
}
if (mSignMap.get(type) !=null) {
返回mSignMap.get(类型);
}
ArrayListmList=new ArrayList();
尝试{
Signature[] 标志=getSignatures(context, packageName);
for (签名sig : 标志) {
String tmp="错误!";
if (MD5.equals(type)) {
tmp=getSignatureByteString(sig, MD5);
} else if (SHA1.equals(type)) {
tmp=getSignatureByteString(sig, SHA1);
} else if (SHA256.equals(type)) {
tmp=getSignatureByteString(sig, SHA256);
}
mList.add(tmp);
}
} catch (异常e) {
Log.e(TAG, e.toString());
}
mSignMap.put(类型,mList);
返回mLList;
}
/**
* 获取签名sha1值
* @参数上下文
* @返回
*/
公共静态StringgetSha1(上下文上下文){
字符串res="";
ArrayListmlist=getSignInfo(上下文, SHA1);
if (mlist !=null mlist.size() !=0) {
res=mlist.get(0);
}
返回资源;
}
/**
* 获取签名MD5值
* @参数上下文
* @返回
*/
公共静态StringgetMD5(上下文上下文){
字符串res="";
ArrayListmlist=getSignInfo(上下文, MD5);
if (mlist !=null mlist.size() !=0) {
res=mlist.get(0);
}
返回资源;
}
/**
* 获取签名SHA256值
* @参数上下文
* @返回
*/
公共静态StringgetSHA256(上下文上下文){
字符串res="";
ArrayListmlist=getSignInfo(上下文,SHA256);
if (mlist !=null mlist.size() !=0) {
res=mlist.get(0);
}
返回资源;
}
/**
* 返回对应包的签名信息
* @参数上下文
* @param 包名
* @返回
*/
私有静态Signature[] getSignatures(Context context, String packageName) {
PackageInfo packageInfo=null;
尝试{
packageInfo=context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
返回packageInfo.signatures;
} catch (异常e) {
e.printStackTrace();
}
返回空值;
}
/**
* 获取对应类型的字符串(将signed byte[]信息转换为16进制)
* @参数信号
* @参数类型
* @返回
*/
私有静态StringgetSignatureString(签名sig,字符串类型){
byte[] hexBytes=sig.toByteArray();
字符串指纹="错误!";
尝试{
MessageDigest 摘要=MessageDigest.getInstance(type);
if (摘要!=null) {
byte[] 摘要Bytes=摘要.digest(hexBytes);
StringBuilder sb=new StringBuilder();
for (字节摘要字节: 摘要字节) {
sb.append((Integer.toHexString((digestByte0xFF) |0x100)).substring(1, 3));
}
指纹=sb.toString();
}
} catch (异常e) {
Log.e(TAG, "getSignatureString:", e);
}
返回指纹;
}
/**
* 获取对应类型的字符串(将signed byte[]信息转换成字符串形式如95:F4:D4:FG)
* @参数信号
* @参数类型
* @返回
*/
私有静态StringgetSignatureByteString(签名sig,字符串类型){
byte[] hexBytes=sig.toByteArray();
字符串指纹="错误!";
尝试{
MessageDigest 摘要=MessageDigest.getInstance(type);
if (摘要!=null) {
byte[] 摘要Bytes=摘要.digest(hexBytes);
StringBuilder sb=new StringBuilder();
for (字节摘要字节: 摘要字节) {
sb.append(((Integer.toHexString((digestByte0xFF) |0x100)).substring(1, 3)).toUpperCase());
sb.append(":");
}
指纹=sb.substring(0, sb.length() -1);
}
} catch (异常e) {
Log.e(TAG, "getSignatureByteString 失败", e);
}
返回指纹;
}
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
【快速掌握SHA1、SHA256、MD5等哈希算法工具使用技巧】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这类的工具真是太方便了!
有20位网友表示赞同!
我一直想找一个能快速计算hash值的工具,这个简直是福音啊!
有8位网友表示赞同!
支持多种算法,可以满足不同的需求。
有8位网友表示赞同!
界面看起来简洁易用,上手应该很快。
有5位网友表示赞同!
不知道能不能生成文件的校验和?
有12位网友表示赞同!
希望有命令行的使用方式,更加方便集成到项目中。
有11位网友表示赞同!
有没有开源源代码?想看看内部实现机制。
有10位网友表示赞同!
对于安全领域来说,这样的工具非常重要。
有10位网友表示赞同!
加密算法方面比较全面,包含了主流的哈希算法。
有19位网友表示赞同!
感觉这个效率很高,计算速度很快。
有9位网友表示赞同!
分享一下使用教程吗?我有些不太明白怎么用。
有18位网友表示赞同!
这种工具对开发人员来说简直必不可少啊!
有8位网友表示赞同!
希望能支持更多其他的加密算法。
有8位网友表示赞同!
好用是好用,但是能不能提供一些更详细的介绍呢?比如适用于哪些场景?
有15位网友表示赞同!
我一直在用其他工具计算hash值,这个看起来不错,打算试试看。
有15位网友表示赞同!
真希望有中文版本界面!
有5位网友表示赞同!
对于没有编程基础的人来说,操作起来会不会比较复杂?
有18位网友表示赞同!
期待能够加入更多功能,比如数据加密和解密。
有8位网友表示赞同!
有没有手机端版本的应用?
有5位网友表示赞同!
这个工具的名字很有意思喔!简洁明了就明白了的功能。
有10位网友表示赞同!