我们可以使用C#中的内置函数将十六进制字符串转换为字节数组,还是必须为此创建自定义方法?
我想创建一个C#类来解密使用T-SQL的EncryptByPassPhrase加密的字节数组.(是的,我知道我可以在SQL Server中解密,但我需要的是能够在数据库层和中间层中等效加密/解密.)
据我所知,SQL Server的EncryptByPassPhrase和DecryptByPassPhrase使用TripleDES对称密钥算法.但是,我不清楚IV应该模拟SQL Server的密码学.我可以使用TripleDESCryptoServiceProvider类加密/解密,但是我找不到正确的key和IV实现来复制SQL Server正在做的事情.
有没有人做过类似的事情?谢谢!
我需要解密使用 EncryptByPassPhrase 在数据库上加密的值,但不访问数据库。
如何从密码短语中获取加密密钥?
我看过
在 C# 中复制 T-SQL DecryptByPassPhrase
和
C# 从 SQL Server EncryptByPassPhrase 解密字节?
我的代码是:
public static string AESDatabaseDecrypt(string encryptedString)
{
passphrase = "S0meFakePassPhrase01234!";
encryptedString = "AQAAAOmuc52dnbVwTqEx1kp+4WhI89LYKHh3jg=="; // temporarily hard coded
// setup encryption settings to match decryptbypassphrase
TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
provider.Key = UTF8Encoding.UTF8.GetBytes(passphrase).Take(16).ToArray(); // stuck on getting key from passphrase
provider.KeySize = 128;
provider.Padding = PaddingMode.Zeros;
// setup data to be decrypted
byte[] encryptedStringAsByteArray = Convert.FromBase64String(encryptedString);
// hack some extra bytes up to a …
Run Code Online (Sandbox Code Playgroud) 我有一个加密的字符串及其密钥,它是通过SQL Server使用“ EncryptByPassPhrase”创建的,如何在PHP中对其进行解密?
我已经阅读了“ EncryptByPassPhrase”的文档,该文档指出这是128长度的三重DES加密。我尝试对PHP进行3DES解密,但未返回预期的输出。
MS SQL中的加密是通过
declare @encrypt varbinary(200)
select @encrypt = EncryptByPassPhrase('key', 'taskseq=10000&amt=200.5' )
select @encrypt
Run Code Online (Sandbox Code Playgroud)
我在PHP中将其解密如下:
function decryptECB($encrypted, $key) {
$iv_size = mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
// decrypting
$stringText = mcrypt_decrypt(MCRYPT_3DES, $key, $encrypted,
MCRYPT_MODE_ECB, $iv);
return $stringText;
}
Run Code Online (Sandbox Code Playgroud)