vb.net中有个3DES的加解密示例,用其加密在php中不知如何解密,看了网上很多代码,主要还是编码的问题,将vb.net的代码转为C#的代码如下:
using System;
using System.Security.Cryptography;
public sealed class My3Des
{
private TripleDESCryptoServiceProvider TripleDes = new TripleDESCryptoServiceProvider();
//---指定密钥的哈希创建指定长度的字节数组
private byte[] TruncateHash(string key, int length)
{
// byte[] functionReturnValue = 0;
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
// Hash the key.
byte[] keyBytes = System.Text.Encoding.Unicode.GetBytes(key);
byte[] hash = sha1.ComputeHash(keyBytes);
// Truncate or pad the hash.
Array.Resize(ref hash,length);
return hash;
}
//添加用来初始化 3DES 加密服务提供程序的构造函数。
//key 参数控制 EncryptData 和 DecryptData 方法。
public My3Des(string key)
{
// Initialize the crypto provider.

本文探讨了在VB.NET中使用3DES加密的数据,在PHP中如何使用openssl进行解密的问题。主要难点在于编码的转换,特别是Unicode编码在C#和PHP之间的差异。解决方法是确保在PHP中使用UCS-2LE(Unicode小端字节序)进行解码,以匹配C#中Unicode编码的默认格式。此外,还提到了通过在密码前添加随机字符来实现每次加密结果不同的策略。

271

被折叠的 条评论
为什么被折叠?



