本文主要是介绍应用软件安全编程--24不要使用硬编码密匙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当程序中使用硬编码加密密匙时,所有项目开发人员都可以查看该密匙,甚至如果攻击者能够获取 程序 class文件,可通过反编译得到密匙,硬编码加密密匙会大大降低系统安全性。
对于避免使用硬编码密匙的情况,示例1给出了不规范用法(Java 语言)示例。示例2给出了规范 用法(Java 语言)示例。
示例1:private static String encryptionKey ="dfashsdsdfsdgagascv";byte[] keyBytes = encryptionKey.getBytes();SecretKeySpec key = new SecretKeySpec(keyBytes,"AES");Cipher encryptCipher = Cipher.getInstance("AES");encryptCipher.init(Cipher.ENCRYPT MODE,key);
上述代码使用硬编码加密密钥执行 AES 加密。
程序应采用不小于8个字节的随机生成的字符串作为密匙。
示例2:KeyGeneratorkeyGen = KeyGenerator.getInstance("AES");keyGen.init(128,new SecureRandom(password.getBytes()));SecretKeysecretKey = kgen.generateKey();byte[] keyBytes = secretKey.getEncoded();SecretKeySpec key = new SecretKeySpec(keyBytes,"AES");Cipher encryptCipher = Cipher.getInstance("AES");encryptCipher.init(Cipher.ENCRYPT MODE,key);
上述代码使用 KeyGenerator 来生成密匙。
这篇关于应用软件安全编程--24不要使用硬编码密匙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!