【问题标题】:AES crypt function with C# and decrypt using javascript使用 C# 的 AES crypt 函数并使用 javascript 解密
【发布时间】:2013-01-12 07:02:00
【问题描述】:

我正在尝试编写一个可以使用 JavaScript 解密的 C# crypt 函数, 有没有办法做到这一点?

【问题讨论】:

标签: c# javascript aes


【解决方案1】:

对于需要更高安全性的应用程序,我通常使用 C# 进行编码和解码,并在 JS 中使用 $.ajax,但是有一种简单的方法使用 JS 来解码预加密的字符串。

你可以使用 Base64String...

C#:

string encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(str));

JS:

function decode(str) {
  var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  var output = "";
  var chr1, chr2, chr3;
  var enc1, enc2, enc3, enc4;
  var i = 0;

  do {
     enc1 = keyStr.indexOf(str.charAt(i++));
     enc2 = keyStr.indexOf(str.charAt(i++));
     enc3 = keyStr.indexOf(str.charAt(i++));
     enc4 = keyStr.indexOf(str.charAt(i++));

     chr1 = (enc1 << 2) | (enc2 >> 4);
     chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
     chr3 = ((enc3 & 3) << 6) | enc4;

     output = output + String.fromCharCode(chr1);

     if (enc3 != 64) {
        output = output + String.fromCharCode(chr2);
     }
     if (enc4 != 64) {
        output = output + String.fromCharCode(chr3);
     }
   } while (i < str.length);

  return output;
}

【讨论】:

  • 我知道有些人可能不同意我的观点,但我相信拥有客户端脚本本质上与 aes 加密标准相冲突。这是我只加密/解密服务器端,并使用 json 调用进行通信的原因之一。这样我还可以使用会话、cookie 等...并确保加密非常强大,而不是使用 C#/JS 加密。
  • 那是encoding,不是encryption
  • 您是否费心阅读我的 cmets,并注意到您会注意到我将其称为编码而不是加密。在我的评论中,我提出了加密的理由,并明确表示你不能在客户端进行加密,当我确实需要加密的东西时,我只在服务器端进行!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多