異質系統或網路服務如需進行資料的傳遞或交易,又不希望將資料公開透明化時。
其中之一的方法就是把主機間傳遞的資料加密,而Triple DES這演算法是加密的選擇之一。
加密後的原始資料是byte array的格式,
當轉成明文之後裏面會有特殊字元的問題,
利用Triple DES演算法加解密後在輸出前需轉成Base64的格式,
在傳送時再透過urlencode編碼送出即可。
透過雙方的資料加密傳遞或許可以解決部份驗證的機制
但是並非是絕對安全的作法,僅供參考。
以下的程式碼參考來源至Sanity Free dot org
原文為Triple DES between PHP and C#(本站自行改編VB.net和部份程式)。
Triple DES的VB.NET程式碼(加密)
Dim input_value AS String
Dim data As Byte() = Encoding.ASCII.GetBytes(input_value )
Dim tdes As TripleDES = TripleDES.Create()
tdes.IV = Encoding.ASCII.GetBytes("12345678")
tdes.Key = Encoding.ASCII.GetBytes("123456789012345678912345")
tdes.Mode = CipherMode.ECB
tdes.Padding = PaddingMode.Zeros
Dim ict As ICryptoTransform = tdes.CreateEncryptor()
Dim enc As Byte() = ict.TransformFinalBlock(data, 0, data.Length)
Return Convert.ToBase64String(enc)
Triple DES的VB.NET程式碼(解密)
Dim data As Byte() = Convert.FromBase64String(cyper_text.Trim)
Dim tdes As TripleDES = TripleDES.Create()
tdes.IV = = Encoding.ASCII.GetBytes("12345678")
tdes.Key = Encoding.ASCII.GetBytes("123456789012345678912345")
tdes.Mode = CipherMode.ECB
tdes.Padding = PaddingMode.Zeros
Dim ict As ICryptoTransform = tdes.CreateDecryptor()
Dim enc As Byte() = ict.TransformFinalBlock(data, 0, data.Length)
Return Encoding.ASCII.GetString(enc)
Triple DES的PHP程式碼(加密)
$buffer = $_POST['data'];
// get the amount of bytes to pad
$extra = 8 - (strlen($buffer) % 8);
// add the zero padding
if(strlen($buffer) % 80) {
for($i = 0; $i
$buffer .= "\0";
}
}
// very simple ASCII key and IV
$key = "123456789012345678912345";
$iv = "12345678";
$cipher_alg=MCRYPT_TripleDES;
$encrypted_string = mcrypt_encrypt($cipher_alg, $key,$buffer, MCRYPT_MODE_ECB, $iv);
$a=base64_encode($encrypted_string);
註:
1.在PHP方面先修改php.ini把一個跟crypt有關的註解取銷掉
2.libmcrypt.dll放在system32底下.
- Apr 24 Thu 2008 14:02
[.net]透過Triple DES在VB.NET與PHP間交換資料
全站熱搜
留言列表
禁止留言