我正在审查我们团队开发的一个产品的代码,该产品将信用卡信息存储在本地数据库中。如果没有互联网连接,则可以访问此数据库。我偶然发现了加密方法。
编写我们这部分代码的开发人员将AES加密到兔子之上。我见过AES在AES (我认为与Triple相同的概念)上的实现,但我从未见过或研究过流上的堆积块。我不知道这样做的结果是一致的(即没有数据损坏)还是安全的。
我会认为它们是因为我假设使用不同密钥的堆叠加密绝对不会比一次加密更安全。下面是我找到的代码示例。
function classSecureMessage(message){
this.secretA=security.randomAlphaNum(56);
this.secretB=security.randomAlphaNum(56);
this.secretC=security.randomAlphaNum(56);
var passStr=message;
passStr=CryptoJS.AES.encrypt(passStr, this.secretA);
passStr=CryptoJS.Rabbit.encrypt(passStr.toString(), this.secretB);
passStr=CryptoJS.AES.encrypt(passStr.toString(), this.secretC);
this.message=passStr;
this.decrypt= function(){
var passStr=CryptoJS.AES.decrypt(this.message, this.secretC).toString( CryptoJS.enc.Utf8 );
passStr=CryptoJS.Rabbit.decrypt(passStr, this.secretB).toString( CryptoJS.enc.Utf8 );
passStr=CryptoJS.AES.decrypt(passStr, this.secretA).toString( CryptoJS.enc.Utf8 );
return(passStr);
}
}
编辑:添加这方面的性能并不可怕。加密和解密信用卡数据需要0.012秒。
发布于 2015-10-31 08:58:40
我可以看到一个关于块流分组密码here的引用,其中提到了Bruce的“应用密码学”一书。
我从来没有见过相同密码的堆叠(正如它在链接上说的)的想法是,每一方信任一个不同的密码.所以在AES上堆叠AES没有额外的安全性,除非是蛮力攻击。
我会用另一个分组密码交换一个AES密码,所以在两个密码中的一个被破坏的情况下,你的数据仍然是安全的。
https://stackoverflow.com/questions/33449017
复制相似问题