我有 DES/TripleDES 的 Javascript 实现。它支持 CBC 和 ECB 模式,并且
填充支持 PKCS7、空格或零。它与符合 RFC2898 的 PBKDF2 集成,因此如果您愿意,它可以根据密码生成加密密钥和 IV。您还可以显式设置加密密钥和 IV。
当直接从 Javascript 调用时(任何浏览器、Rhino、WScript.exe,或者可能更接近您的情况,使用 Javascript 的经典 ASP),它是可用的。
我还将它打包为 COM 组件,因此可以从任何兼容 COM 的环境调用它,例如在经典 ASP、Perl 或 VBA 等中运行的 VBScript。
它是一个独立的实现,完全符合 .NET DESCryptoServiceProvider 和 TripleDESCryptoServiceProvider 并可与它们互操作。
在这里获取:http://cheeso.members.winisp.net/srcview.aspx?dir=DES
当直接从 Javascript 调用它时,它看起来像这样:
var pbkdf2 = new PBKDF2(password, salt, iterations);
var key = pbkdf2.deriveBytes(8); // use 24 for 3DES
var iv = pbkdf2.deriveBytes(8); // always 8 (==blocksize)
var des = new DES(key,iv);
var plaintext = "Hello. This is a test. of the emergency broadcasting system.";
var ciphertext = des.encrypt(plaintext);
当从 VBScript 调用 COM 组件时,它看起来像这样:
Dim des
set des = CreateObject("Ionic.Com.DES")
des.Password = "This is my password"
des.Mode = "CBC"
des.TripleDES = True
des.Rfc2898Iterations = 1000
Dim result
result = des.EncryptString(plainText)
Dim decrypted
decrypted = des.DecryptBytes(result)
WScript.echo "decrypted : " & decrypted
加密速度相当快,但密钥生成却不是。
Edit:
您还可以在浏览器中使用 Javascript DES 内容。
这是一个例子:http://jsbin.com/oguye3