3

次のコードを使用してデータベースとの間でデータを暗号化/復号化する C# で書かれたプロジェクトがあります。

public string EncryptString(string Text)
{
    byte[] IV = new byte[8] { 1, 2, 3, 4, 5, 6, 7, 8 };
    string Key = "abcdef";
    byte[] buffer = Encoding.UTF8.GetBytes(Text);
    TripleDESCryptoServiceProvider triple = new TripleDESCryptoServiceProvider();
    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    triple.IV = IV;
    triple.Key = md5.ComputeHash(ASCIIEncoding.UTF8.GetBytes(Key));
    byte[] encodeText = triple.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length);
    string user = Convert.ToBase64String(encodeText);
    return user;
}

public static string DecryptString(string EncryptText)
{
    byte[] IV = new byte[8] { 1, 2, 3, 4, 5, 6, 7, 8 };
    string Key = "abcdef";
    byte[] decodeText = null;
    byte[] buffer = Convert.FromBase64String(EncryptText);
    TripleDESCryptoServiceProvider triple = new TripleDESCryptoServiceProvider();
    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    triple.IV = IV;
    triple.Key = md5.ComputeHash(ASCIIEncoding.UTF8.GetBytes(Key));
    decodeText = triple.CreateDecryptor().TransformFinalBlock(buffer, 0, buffer.Length);
    return Encoding.UTF8.GetString(decodeText);
}

今、私はPHPで同じことをすることになっています。これまでのところ、次のコードに近づきました。

define('CIPHER', 'tripledes');
define('MODE', 'cbc');

function Encrypt($data)
{ 
    $iv = chr(1) . chr(2) . chr(3) . chr(4) . chr(5) . chr(6) . chr(7) . chr(8);
    $key = 'abcdef';
    $tripleKey = substr(md5($key), 0, mcrypt_get_key_size(CIPHER, MODE));
    $encodedText = mcrypt_encrypt(CIPHER, $tripleKey, $data, MODE, $iv);
    return base64_encode($encodedText);
}

function Decrypt($data)
{
    $iv = chr(1) . chr(2) . chr(3) . chr(4) . chr(5) . chr(6) . chr(7) . chr(8);
    $key = 'abcdef';
    $tripleKey = substr(md5($key), 0, mcrypt_get_key_size(CIPHER, MODE));
    $decodedText = mcrypt_decrypt(CIPHER, $tripleKey, base64_decode($data), MODE, $iv);
    return $decodedText;
}

しかし、C# のコードで暗号化された文字列を復号化できません! 私は暗号化の専門家ではありません。どなたか、どの暗号化アルゴリズムとどのモードを使用すればよいか教えていただけませんか?

4

1 に答える 1