【Java编码准则】の #12不要使用不安全或者强度弱的加密算法
来源:互联网 发布:java 7 并发编程指南 编辑:程序博客网 时间:2024/06/07 03:37
安全性要求高的应用程序必须避免使用不安全的或者强度弱的加密算法,现代计算机的计算能力使得攻击者通过暴力破解可以攻破强度弱的算法。例如,数据加密标准算法DES是极度不安全的,使用类似EFF(Electronic Frontier Foundaton) Deep Crack的计算机在一天内可以暴力破解由DES加密的消息。
[不符合安全要求的代码示例]
下面的代码使用强度弱的DES算法对字符串进行加密:
SecretKey key = KeyGenerator.getInstance("DES").generateKey(); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key);// encode bytes as UTF8; strToBeEncrypted contains// the input string that is to be encryptedbyte[] encoded = strToBeEncrypted.getBytes("UTF-8");// perform encryptionbyte[] encrypted = cipher.doFinal(encoded);
[符合安全要求的解决方案]
本方案使用更加安全的AES加密算法来对字符串进行加密
Cipher cipher = Cipher.getInstance("AES");KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128);// 192 and 256 bits may be unavailableSecretKey skey = kgen.generateKey();byte[] raw = skey.getEncoded();SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");cipher.init(Cipher.ENCRYPT_MODE, skeySpec);// encode bytes as UTF8; strToBeEncrypted contains the// input string that is to be encryptedbyte[] encoded = strToBeEncrpyted.getBytes("UTF-8");// perform encryptionbyte[] encrypted = cipher.doFinal(encoded);
[可用性]
使用数学和计算上不安全的加密算法可能导致敏感信息的泄漏。强度弱的加密算法在Java SE 7中可以去使能,它们可以被用在加密允许被破解的场景。例如,ROT13加密算法被广泛用在电子公告牌和网页,这里加密的目的是保护人们免受信息的干扰,而不是保护信息不被人们知道。
——欢迎转载,请注明出处 http://blog.csdn.net/asce1885 ,未经本人同意请勿用于商业用途,谢谢——
0 0
- 【Java编码准则】の #12不要使用不安全或者强度弱的加密算法
- 【Java编码准则】の #11不要使用Object.equals()来比较密钥值
- 【Java编码准则】の #02不要在客户端存储未加密的敏感信息
- java关于使用了未经检查或者不安全的操作
- 编码和加密算法的使用
- 建议119:不要使用自己的加密算法
- Web设计的不要准则
- 【Java编码准则】の #13使用散列函数保存密码
- 编码准则与Java编译器
- 【Java编码准则】の #01限制内存中敏感数据的生命周期
- 使用java自带加密算法实现文本的md5加密算法
- 使用java自带加密算法实现文本的md5加密算法
- 使用java自带加密算法实现文本的md5加密算法
- 使用图像的准则
- android或者java的编码问题
- 编码和加密算法的使用(MD5、Base64、DES、RSA)
- java错误:使用了未经检查或不安全的操作
- java里的对称加密算法使用
- android 启动过程深入解析
- NDIS网络数据监控程序NDISMonitor(1)-----驱动程序(编译过程与源码讲解)
- HDU 1021——Fibonacci Again
- Codility5 FrogRiverOne
- ACM菜鸟大牛和教主的区别
- 【Java编码准则】の #12不要使用不安全或者强度弱的加密算法
- 符合远程开机的计算机硬件要求
- win dll vs linux so
- [LeetCode19]Combinations
- 验证码简单模拟类
- 【OpenCV】opencv中Mat与IplImage,CVMat类型之间转换
- vim改成C语言IDE
- NDIS网络数据监控程序NDISMonitor(2)-----驱动与应用的中间层NdisHook
- FTP上传服务器问题--Host attempting data connect x.x.x.x is not same as server x.x.x.y