基于密码加密.doc

上传人:cn****1 文档编号:549349677 上传时间:2023-10-26 格式:DOC 页数:5 大小:83KB
返回 下载 相关 举报
基于密码加密.doc_第1页
第1页 / 共5页
基于密码加密.doc_第2页
第2页 / 共5页
基于密码加密.doc_第3页
第3页 / 共5页
基于密码加密.doc_第4页
第4页 / 共5页
基于密码加密.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于密码加密.doc》由会员分享,可在线阅读,更多相关《基于密码加密.doc(5页珍藏版)》请在金锄头文库上搜索。

1、基于密码加密 原创作者: snowolf 阅读:35次 评论:0条 更新时间:前天 除了DES,我们还知道有DESede(TripleDES,就是3DES)、AES、Blowfish、RC2、RC4(ARCFOUR)等多种对称加密方式,其实现方式大同小异,这里介绍对称加密的另一个算法PBE PBE PBEPassword-based encryption(基于密码加密)。其特点在于口令由用户自己掌管,不借助任何物理媒体;采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。是一种简便的加密方式。 通过java代码实现如下:Coder类见 单向加密 Java代码 1. importja

2、va.security.Key;2. importjava.util.Random;3. 4. importjavax.crypto.Cipher;5. importjavax.crypto.SecretKey;6. importjavax.crypto.SecretKeyFactory;7. importjavax.crypto.spec.PBEKeySpec;8. importjavax.crypto.spec.PBEParameterSpec;9. 10. /*11. *PBE安全编码组件12. *13. *author梁栋14. *version1.015. *since1.016.

3、*/17. publicabstractclassPBECoderextendsCoder18. /*19. *支持以下任意一种算法20. *21. *22. *PBEWithMD5AndDES23. *PBEWithMD5AndTripleDES24. *PBEWithSHA1AndDESede25. *PBEWithSHA1AndRC2_4026. *27. */28. publicstaticfinalStringALGORITHM=PBEWITHMD5andDES;29. 30. /*31. *盐初始化32. *33. *return34. *throwsException35. */

4、36. publicstaticbyteinitSalt()throwsException37. bytesalt=newbyte8;38. Randomrandom=newRandom();39. random.nextBytes(salt);40. returnsalt;41. 42. 43. /*44. *转换密钥45. *46. *parampassword47. *return48. *throwsException49. */50. privatestaticKeytoKey(Stringpassword)throwsException51. PBEKeySpeckeySpec=n

5、ewPBEKeySpec(password.toCharArray();52. SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance(ALGORITHM);53. SecretKeysecretKey=keyFactory.generateSecret(keySpec);54. 55. returnsecretKey;56. 57. 58. /*59. *加密60. *61. *paramdata62. *数据63. *parampassword64. *密码65. *paramsalt66. *盐67. *return68. *thr

6、owsException69. */70. publicstaticbyteencrypt(bytedata,Stringpassword,bytesalt)71. throwsException72. 73. Keykey=toKey(password);74. 75. PBEParameterSpecparamSpec=newPBEParameterSpec(salt,100);76. Ciphercipher=Cipher.getInstance(ALGORITHM);77. cipher.init(Cipher.ENCRYPT_MODE,key,paramSpec);78. 79. r

7、eturncipher.doFinal(data);80. 81. 82. 83. /*84. *解密85. *86. *paramdata87. *数据88. *parampassword89. *密码90. *paramsalt91. *盐92. *return93. *throwsException94. */95. publicstaticbytedecrypt(bytedata,Stringpassword,bytesalt)96. throwsException97. 98. Keykey=toKey(password);99. 100. PBEParameterSpecparam

8、Spec=newPBEParameterSpec(salt,100);101. Ciphercipher=Cipher.getInstance(ALGORITHM);102. cipher.init(Cipher.DECRYPT_MODE,key,paramSpec);103. 104. returncipher.doFinal(data);105. 106. 107. import java.security.Key;import java.util.Random;import javax.crypto.Cipher;import javax.crypto.SecretKey;import

9、javax.crypto.SecretKeyFactory;import javax.crypto.spec.PBEKeySpec;import javax.crypto.spec.PBEParameterSpec;/* * PBE安全编码组件 * * author 梁栋 * version 1.0 * since 1.0 */public abstract class PBECoder extends Coder /* * 支持以下任意一种算法 * * * PBEWithMD5AndDES * PBEWithMD5AndTripleDES * PBEWithSHA1AndDESede * P

10、BEWithSHA1AndRC2_40 * */public static final String ALGORITHM = PBEWITHMD5andDES;/* * 盐初始化 * * return * throws Exception */public static byte initSalt() throws Exception byte salt = new byte8;Random random = new Random();random.nextBytes(salt);return salt;/* * 转换密钥 * * param password * return * throw

11、s Exception */private static Key toKey(String password) throws Exception PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray();SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);SecretKey secretKey = keyFactory.generateSecret(keySpec);return secretKey;/* * 加密 * * param data * 数据 * param password * 密码 * param salt * 盐 * return * throws Exception */public static byte encrypt(byte data, String password, byte salt)throws Exception Key key = toKey(password);PBEParameterSpec paramSpec = new PBEParameterSpec(sal

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号