首页
社区
课程
招聘
[已解决] [求助]对一个字符串解密的时候,一半正常,一半乱码。 500.00雪花
发表于: 2020-12-22 15:30 2725

[已解决] [求助]对一个字符串解密的时候,一半正常,一半乱码。 500.00雪花

2020-12-22 15:30
2725

对一个字符串解密的时候,一半正常,一半乱码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
string Decrypt(string cipher)
{
    int index = cipher.IndexOf('.');
    string part1 = cipher.Remove(index);
    string part2 = cipher.Substring(index + 1);
    byte[] keyBytes = DecryptPkcs1(USED_KEY, Convert.FromBase64String(part1));
    string result = Encoding.UTF8.GetString(DecryptTripleDES(keyBytes, Convert.FromBase64String(part2)));
    return result;
}
 
byte[] DecryptPkcs1(string key, byte[] data)
{
    if (data == null || data.Length == 0)
    {
        throw new NotSupportedException();
    }
    Pkcs1Encoding pkcs1Encoding = new Pkcs1Encoding(new RsaEngine());
    RsaPrivateCrtKeyParameters parameters = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(key));
    pkcs1Encoding.Init(false, parameters);
    return pkcs1Encoding.ProcessBlock(data, 0, data.Length);
}
 
byte[] DecryptTripleDES(byte[] key, byte[] data)
{
    byte[] rgbIV = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
    Stream stream = new CryptoStream(new MemoryStream(data), new TripleDESCryptoServiceProvider
    {
        Mode = CipherMode.ECB,
        Padding = PaddingMode.PKCS7
    }.CreateDecryptor(key, rgbIV), CryptoStreamMode.Read);
    byte[] array = new byte[data.Length];
    stream.Read(array, 0, array.Length);
    return array;
}

联系 QQ:20828079


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2020-12-22 15:32 被mb_ctudnyvu编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 182
活跃值: (81)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
 PaddingMode.PKCS7   填充模式呗
2020-12-22 17:50
0
雪    币:
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
komany PaddingMode.PKCS7 填充模式呗
能帮忙解决吗?谢谢。
2020-12-22 17:59
0
雪    币: 6588
活跃值: (4032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
结账。
2020-12-23 18:06
0
游客
登录 | 注册 方可回帖
返回
//