TripleDES加密解密

2022-01-15 20:53:01 字數 3250 閱讀 1514

參考:

參考:參考:

對稱加密,是一種比較傳統的加密方式,其加密運算、解密運算使用的是同樣的金鑰,資訊的傳送者和資訊的接收者在進行資訊的傳輸與處理時,必須共同持有該密碼(稱為對稱密碼)。因此,通訊雙方都必須獲得這把鑰匙,並保持鑰匙的秘密。

單鑰密碼系統的安全性依賴於以下兩個因素:

第一、加密演算法必須是足夠強的,僅僅基於密文本身去解密資訊在實踐上是不可能的。

第二、加密方法的安全性依賴於金鑰的秘密性,而不是演算法的秘密性,因此,我們沒有必要確保演算法的秘密性(事實上,現實中使用的很多單鑰密碼系統的演算法都是公開的),但是我們一定要保證金鑰的秘密性。

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#具體實現如下:

using

system;

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加密:

function

desencrypt(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...