SHA算法介绍:SHA即Secure Hash Algorithm(安全哈希算法),用于数字签名标准(DSS)里面定义的数字签名算法(DSA)。SHA是数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全。

SHA算法详解:SHA算法是接收一段明文,然后以一种不可逆的方式将它转换成一段密文,也可以简单的理解为取一串输入码,并把它们转化为长度较短、位数固定的输出序列即散列值的过程。散列函数值可以说是对明文的一种“指纹”或是“摘要”,所以对散列值的数字签名就可以视为对此明文的数字签名。

使用Java通过的API实现SHA加密程序如下:

<span style="font-size:18px;">import java.security.MessageDigest;public class SHA {public static final String KEY_SHA = "SHA";public static char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//SHA加密public static byte[] encryptSHA(byte[] data) throws Exception {MessageDigest sha = MessageDigest.getInstance(KEY_SHA);sha.update(data);return sha.digest();}public static void main(String[] args) throws Exception {String inputStr="这是一个测试字符串aaabbbccc111222333";System.out.println("原始数据:"+inputStr);byte[] inputData = inputStr.getBytes();byte[] outDate =  encryptSHA(inputData);System.out.println("原始加密数据:"+outDate);//把密文转换成16进制字符串的形式int j = outDate.length;char str[] = new char[j * 2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 = outDate[i];str[k++] = hexDigits[byte0 >>> 4 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}System.out.print("16进制字符串形式密文:");System.out.println(str);}}
</span>

输出结果为:

<span style="font-size:18px;">原始数据:这是一个测试字符串aaabbbccc111222333
原始加密数据:[B@1f06dc3
16进制字符串形式密文:A04901BECFA058EF734482D143E743EBBD13A8E5</span>

Java加密算法---SHA相关推荐

  1. 对称密钥加密算法 对称轮数_选择Java加密算法第2部分–单密钥对称加密

    对称密钥加密算法 对称轮数 抽象 这是涵盖Java加密算法的三部分博客系列的第2部分. 该系列涵盖如何实现以下功能: 使用SHA–512散列 AES–256 RSA–4096 这第二篇文章详细介绍了如 ...

  2. 非对称加密 公钥私钥_选择Java加密算法第3部分–公钥/私钥非对称加密

    非对称加密 公钥私钥 抽象 这是涵盖Java加密算法的三部分博客系列的第3部分. 该系列涵盖如何实现以下功能: 使用SHA–512散列 使用AES–256的单密钥对称加密 RSA–4096 这第三篇文 ...

  3. 选择Java加密算法第2部分–单密钥对称加密

    抽象 这是涵盖Java加密算法的三部分博客系列的第2部分. 本系列介绍如何实现以下目标: 使用SHA–512散列 AES–256 RSA–4096 这第二篇文章详细介绍了如何实现单密钥对称AES-25 ...

  4. 选择Java加密算法第3部分–公钥/私钥非对称加密

    抽象 这是涵盖Java加密算法的三部分博客系列的第3部分. 本系列介绍如何实现以下目标: 使用SHA–512散列 使用AES–256的单密钥对称加密 RSA–4096 这第三篇文章详细介绍了如何实现非 ...

  5. 各种Java加密算法

    各种Java加密算法 您的评价:           如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要 ...

  6. java加密算法入门(三)-非对称加密详解

    1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...

  7. Java加密算法(十一)——双向认证

    对于双向认证,做一个简单的描述.  服务器端下发证书,客户端接受证书.证书带有公钥信息,用于验证服务器端.对数据加密/解密,起到OSI五类服务的认证(鉴别)服务和保密性服务. 这只是单向认证,为什么? ...

  8. [转]Java加密算法

    如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorit ...

  9. 【加密技术】Java加密算法

    如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorit ...

最新文章

  1. Spring中的异步任务
  2. 【译】Why Decentralized AI Matters Part I: Economics and Enablers
  3. nginx的目录结构和配置文件
  4. sed中支持变量的处理方法
  5. ueditor样式过滤问题
  6. 零基础怎么玩转可视化大屏?这个工具只需5步!
  7. JavaScript:正则表达式 分组
  8. 问题1:VS2017:找不到 Windows SDK 版本10.0.17134.0
  9. bzero等函数源代码实现
  10. mysql 视图 algorithm_MySQL的视图讲解
  11. 51单片机编程题:编程将外部数据存储器1050H~1054H单元分别赋值为01,02,03,04
  12. Go语言核心之美 2.1-整数
  13. fzu2190---非提的救赎 (单调栈)
  14. mp4视频分片生成m3u8流文件并加密
  15. Python恢复初始的pip list(清空所有包)
  16. 圆形百分比进度条效果
  17. MAVEN的安装与配置教程(超详细版)
  18. 《宝塔面板教程5》:如何上传网站程序安装自己的网站
  19. 关于Visual studio 2015 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包的解决方案
  20. 图像处理:梯度与反色

热门文章

  1. MacBook Pro运行深度学习代码——Tensorflow_macos
  2. Android Telephony控制通话消息下发流程
  3. 【R语言】批量合并Excel文件,并增加文件来源列
  4. 定点数与浮点数(小数)
  5. Teradata和Exadata
  6. 软件测试——接口常见问题汇总
  7. DELL游匣G5 安装LinuxMnit20
  8. Linux 常用基本命令 rmdir rm
  9. 计算机网络引言【读书笔记】
  10. 做3D建模月薪平均多少?