当前位置: 首页 > news >正文

应用软件安全编程--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 来生成密匙。

相关文章:

  • 如何通过cpolar内网穿透工具实现远程访问本地postgreSQL
  • ExcelBDD PHP Guideline
  • vim模式用法总结
  • 基于RK3588全高端智能终端机器人主板
  • 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
  • MATLAB 嵌套switch语句||MATLAB while循环
  • C#,数值计算——插值和外推,分段线性插值(Linear_interp)的计算方法与源程序
  • MySQL索引:作用、类型、设计原则、优化策略与常见陷阱
  • python实现炫酷的屏幕保护程序
  • Three.js相机模拟
  • 数据结构 并查集
  • 9 HDFS架构剖析
  • 【Linux】线程互斥
  • 记GitLab服务器迁移后SSH访问无法生效的问题解决过程
  • 解决docker运行elastic服务端启动不成功
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • android图片蒙层
  • AngularJS指令开发(1)——参数详解
  • Java反射-动态类加载和重新加载
  • maven工程打包jar以及java jar命令的classpath使用
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从零开始学习部署
  • 力扣(LeetCode)21
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 学习HTTP相关知识笔记
  • HanLP分词命名实体提取详解
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​力扣解法汇总946-验证栈序列
  • ![CDATA[ ]] 是什么东东
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #{}和${}的区别是什么 -- java面试
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #大学#套接字
  • #每天一道面试题# 什么是MySQL的回表查询
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (2022 CVPR) Unbiased Teacher v2
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (十六)串口UART
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)程序员疫苗:代码注入
  • (转)关于pipe()的详细解析
  • ./configure,make,make install的作用(转)
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net 设置默认首页
  • .net2005怎么读string形的xml,不是xml文件。