【Java编码准则】の #12不要使用不安全或者强度弱的加密算法

     安全性要求高的应用程序必须避免使用不安全的或者强度弱的加密算法,现代计算机的计算能力使得攻击者通过暴力破解可以攻破强度弱的算法。例如,数据加密标准算法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 encrypted
	byte[] encoded = strToBeEncrypted.getBytes("UTF-8");
	
	// perform encryption
	byte[] encrypted = cipher.doFinal(encoded);


[符合安全要求的解决方案]

     本方案使用更加安全的AES加密算法来对字符串进行加密

	Cipher cipher = Cipher.getInstance("AES");
	KeyGenerator kgen = KeyGenerator.getInstance("AES");
	kgen.init(128);	// 192 and 256 bits may be unavailable
	
	SecretKey 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 encrypted
	byte[] encoded = strToBeEncrpyted.getBytes("UTF-8");
	
	// perform encryption
	byte[] encrypted = cipher.doFinal(encoded);


[可用性]

     使用数学和计算上不安全的加密算法可能导致敏感信息的泄漏。强度弱的加密算法在Java SE 7中可以去使能,它们可以被用在加密允许被破解的场景。例如,ROT13加密算法被广泛用在电子公告牌和网页,这里加密的目的是保护人们免受信息的干扰,而不是保护信息不被人们知道。


——欢迎转载,请注明出处 http://blog.csdn.net/asce1885 ,未经本人同意请勿用于商业用途,谢谢——

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以通过以下步骤来检测加密算法是否安全: 1. 了解加密算法安全性:首先,需要了解不同的加密算法及其安全性评级。一些已经被认为是不安全加密算法包括DES、RC4和MD5。而一些较为安全的算法包括AES、RSA和SHA。 2. 查看Java加密库:Java提供了许多内置的加密算法库,例如javax.crypto包。可以查看相关文档以了解每个算法的安全性。通常,Java库中包含的算法都是经过严格测试和验证的。 3. 检查算法使用的密钥长度:某些加密算法可能具有安全性问题,但通过增加密钥长度可以提高安全性。例如,AES算法在使用128位或256位密钥时被认为是安全的,而使用56位密钥时则不安全。 4. 参考加密算法的最新推荐标准:加密算法安全性标准会随着时间的推移而变化。可以参考国际标准组织(例如NIST)或其他权威机构发布的最新推荐标准,了解哪些算法是目前被认为是安全的。 5. 使用专业的安全工具:可以使用一些专业的加密和安全性工具来评估加密算法安全性。例如,可以使用OWASP ZAP或Burp Suite等工具来测试应用程序中使用加密算法是否容易受到攻击。 需要注意的是,加密算法安全性不仅仅取决于算法本身,还取决于其使用的方式和实现细节。因此,在实际应用中,还需要注意密钥管理、随机数生成、数据传输等方面的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值