这是我学习JAVA 安全的过程,目标--->文件加密
找到了这么多JAVA 安全,文件加密的文章,凭 自己感觉.
要求:文件加密
1,听说 非对称加密文件的安全性很高(在几种加密方式中),非对称加密文件 典型的RSA,实现这个加密,成功,有两个密钥(公,私).加密4M文件,解密花费11分钟...(改方案)(其实网上有说用非对称加密对称密钥的,我觉得也不错)
2,用对称加密(听说目前最高的((安全性))是AES),实现成功,加密解密共用时不到2S,可是 对 密钥的管理,麻烦...生成密钥,密钥必须由一种安全的方式给用户.
3,基于 密码的对称加密.咋实现啊??
KeyGenerator gen21 = KeyGenerator.getInstance("AES"); gen21.init(256); Key myKeySpec = gen21.generateKey();
生成了Key,可是如何加密码呢?
发现gen21.init(256);有多个方法
void
init(int keysize)
void
init(int keysize, SecureRandom random)
SecureRandom!一个随机的东西
目标 指向SecureRandom!!random - 此密钥生成器的随机源
SecureRandom()
SecureRandom(byte[] seed) ...
自己种个seed,SecureRandom继承至java.util.Random,Random 的seed相同,则随机相同,于是
gen2.init(256,new SecureRandom("这里是密码".getBytes()));
尝试后成功,灵感来自 网上一篇DES加密.
到底 代码是不是应该这么写??我也不清楚.都是感觉.
这样的学习方法 真的很危险...
问题1,到底 AES 实现 基于密码的加密 是不是应该这么写呢??
问题2,非对称,对称密钥的方法加密,是不是需要双方都有 能力加密,这样 就不可基于BS结构,我这样理解对么?
请 各位高手指点一下 |