參考:
參考:參考:
對稱加密,是一種比較傳統的加密方式,其加密運算、解密運算使用的是同樣的金鑰,資訊的傳送者和資訊的接收者在進行資訊的傳輸與處理時,必須共同持有該密碼(稱為對稱密碼)。因此,通訊雙方都必須獲得這把鑰匙,並保持鑰匙的秘密。
單鑰密碼系統的安全性依賴於以下兩個因素:
第一、加密演算法必須是足夠強的,僅僅基於密文本身去解密資訊在實踐上是不可能的。
第二、加密方法的安全性依賴於金鑰的秘密性,而不是演算法的秘密性,因此,我們沒有必要確保演算法的秘密性(事實上,現實中使用的很多單鑰密碼系統的演算法都是公開的),但是我們一定要保證金鑰的秘密性。
des(data encryption standard)和tripledes是對稱加密的兩種實現。
des和tripledes基本演算法一致,只是tripledes演算法提供的key位數更多,加密可靠性更高。
des使用的金鑰key為8位元組,初始向量iv也是8位元組。
tripledes使用24位元組的key,初始向量iv也是8位元組。
兩種演算法都是以8位元組為乙個塊進行加密,乙個資料塊乙個資料塊的加密,乙個8位元組的明文加密後的密文也是8位元組。如果明文長度不為8位元組的整數倍,新增值為0的位元組湊滿8位元組整數倍。所以加密後的密文長度一定為8位元組的整數倍。
tripledes加密:
//////tripledes 加密
//////
//////
private
static
string desencrypt(string toencrypt, string
key) ;
icryptotransform ctransform =tdes.createencryptor();
byte resultarray = ctransform.transformfinalblock(toencryptarray, 0
, toencryptarray.length);
tdes.clear();
return convert.tobase64string(resultarray, 0
, resultarray.length);
}
tripledes解密:
//////tripledes解密
//////
//////
public
static
string desdecrypt(string todecrypt, string
key) ;
icryptotransform ctransform =tdes.createdecryptor();
byte resultarray = ctransform.transformfinalblock(enbytes, 0
, enbytes.length);
tdes.clear();
return
encoding.utf8.getstring(resultarray);
} catch
}
c#具體實現如下:
usingsystem;
using
system.security.cryptography;
using
system.text;
namespace
tripledes
//////
獲取加密key的 md5 hash,最終des加密的時候使用這個hash值
/// ///
原始key值
///public
static
byte getkeymd5hash(string
key)
//////
tripledes 加密
/// ///
//////
public
static
string desencrypt(string toencrypt, byte
privatekey)
;icryptotransform ctransform =tdes.createencryptor();
byte resultarray = ctransform.transformfinalblock(toencryptarray, 0
, toencryptarray.length);
tdes.clear();
return convert.tobase64string(resultarray, 0
, resultarray.length);
}//////
tripledes解密
/// ///
//////
public
static
string desdecrypt(string todecrypt, byte
privatekey)
;icryptotransform ctransform =tdes.createdecryptor();
byte resultarray = ctransform.transformfinalblock(enbytes, 0
, enbytes.length);
tdes.clear();
return
encoding.utf8.getstring(resultarray);}}
}
php實現如下:
<?php/*tripledes加密
*/function desencrypt($data) /*
tripledes解密 */
function desdecrypt($data)
/*測試 */
$encryptstr = desencrypt("
");
echo
"encrypted string: $encryptstr";
$decryptstr =desdecrypt($encryptstr);
echo
"decrypted string: $decryptstr";
?>
js加密:
functiondesencrypt(str, key));
//轉換為字串
return encrypted =encrypted.tostring();
}
TripleDes加密解密
tripledes演算法加密解密總結 public static tripledescryptoserviceprovider tdes new tripledescryptoserviceprovider tripledes加密字串 待加密的字串 加密金鑰,要求為8位 加密成功返回加密後的字串,失...
TripleDES加密 解密演算法
using system using system.collections.generic using system.linq using system.text using system.security.cryptography using system.io namespace 加密,使用密碼...
TripleDES加密 解密演算法
using system using system.collections.generic using system.linq using system.text using system.security.cryptography using system.io public class clas...