【问题标题】:TripleDES encryption in universal app c# WP 8.1通用应用程序 c# WP 8.1 中的 TripleDES 加密
【发布时间】:2015-07-22 08:05:14
【问题描述】:
public static string tripleDESEncryptor(string toEncrypt, string keyString)
{

    var crypt = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.TripleDesEcb);
    IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(toEncrypt, BinaryStringEncoding.Utf8);
    IBuffer keyBuffer = CryptographicBuffer.ConvertStringToBinary(keyString, BinaryStringEncoding.Utf8);
    CryptographicKey key = crypt.CreateSymmetricKey(keyBuffer);            
    var sigBuffer = CryptographicEngine.Sign(key, buffer);  // throws exception here
    string signature = CryptographicBuffer.EncodeToBase64String(sigBuffer);
    return signature;
}

这会引发 InvalidCastException,我似乎无法弄清楚为什么或我做错了什么。

keyString 的长度为 24。

任何帮助将不胜感激。

【问题讨论】:

  • 异常中有任何细节吗?消息、数据、堆栈跟踪?您是否尝试过使用 CryptographicBuffer.GenerateRandom(24) 并将其结果与您自己的密钥缓冲区(实际类型、长度、内容种类)进行比较?
  • 消息:指定的转换无效。内部异常:空。堆栈跟踪:在 Windows.Security.Cryptography.Core.CryptographicEngine.Sign(CryptographicKey 密钥,IBuffer 数据)
  • @PieterWitvoet :密钥缓冲区显示长度和容量为 24,与使用 CryptographicBuffer.GenerateRandom(24) 相同。缓冲区显示长度和容量为 36。

标签: c# windows-phone-8.1 win-universal-app tripledes


【解决方案1】:

感谢您的帮助,这对我有用 -

public static string tripleDESEncryptor(string toEncrypt, string keyString)
{
   var crypt = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.TripleDesEcbPkcs7);

            IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(toEncrypt, BinaryStringEncoding.Utf8);
            IBuffer keyBuffer = CryptographicBuffer.ConvertStringToBinary(keyString, BinaryStringEncoding.Utf8);

            CryptographicKey key = crypt.CreateSymmetricKey(keyBuffer);

            IBuffer signed = CryptographicEngine.Encrypt(key, buffer, null);

            string signature = CryptographicBuffer.EncodeToBase64String(signed);
            return signature;
}

【讨论】:

  • 嗨@nipun.birla,我在我的Windows Phone应用程序中尝试了同样的事情,但是得到一个异常pn createsymmetrickey方法“值不在预期范围内。”。你能帮我吗
  • @asitis 您的密钥字符串的长度是多少?
  • 嗨,密钥长度为 20。
  • @asitis 如果不影响您的要求,您可以尝试使用 8 的倍数的密钥长度吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多