lihat salinan biasa ke cetak papan klip?
// ruang nama
menggunakan Sistem;
menggunakan Sistem.Keamanan.Kriptografi;
menggunakan Sistem.IO;
menggunakan Sistem.Teks;
//metode
//metode enkripsi
Enkripsi string publik (string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = DESCryptoServiceProvider() baru;
//Masukkan string ke dalam array byte
//Saya mengubah pengkodean UTF8 yang awalnya digunakan menjadi pengkodean Unicode, tetapi tidak berhasil.
byte[] inputByteArray = Pengkodean.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Pengkodean.Unicode.GetBytes(pToEncrypt);
//Tetapkan kunci dan offset objek terenkripsi
//Teks asli menggunakan metode GetBytes dari metode ASCIIEncoding.ASCII.
// Membuat teks bahasa Inggris perlu dimasukkan saat memasukkan kata sandi
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = MemoryStream baru();
CryptoStream cs = CryptoStream baru(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Tulis array byte ke dalam aliran kripto
//(Ini akan berakhir di aliran memori)
cs.Write(inputByteArray, 0, inputByteArray.Panjang);
cs.FlushFinalBlock();
//Dapatkan kembali data dari aliran memori, dan menjadi string
StringBuilder ret = StringBuilder baru();
foreach(byte b di ms.ToArray())
{
//Format sebagai hex
ret.AppendFormat("{0:X2}",b);
}
ret.ToString();
kembali ret.ToString();
}
//metode dekripsi
Dekripsi string publik (string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = DESCryptoServiceProvider() baru;
//Masukkan string input ke dalam array byte
byte[] inputByteArray = byte baru[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Panjang / 2; x++)
{
int i = (Konversi.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
//Tetapkan kunci dan offset objek terenkripsi. Nilai ini penting dan tidak dapat diubah.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = MemoryStream baru();
CryptoStream cs = CryptoStream baru(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//Membuang data melalui aliran kripto ke dalam aliran memori
cs.Write(inputByteArray, 0, inputByteArray.Panjang);
cs.FlushFinalBlock();
//Dapatkan kembali data yang didekripsi dari aliran memori
//Buat objek StringBuild. CreateDecrypt menggunakan objek aliran, dan teks yang didekripsi harus diubah menjadi objek aliran.
StringBuilder ret = StringBuilder baru();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
//-------Kode selesai--------------------
//Nama spasi
menggunakan Sistem;
menggunakan Sistem.Keamanan.Kriptografi;
menggunakan Sistem.IO;
menggunakan Sistem.Teks;
//metode
//metode enkripsi
Enkripsi string publik (string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = DESCryptoServiceProvider() baru;
//Masukkan string ke dalam array byte
//Saya mengubah pengkodean UTF8 yang awalnya digunakan menjadi pengkodean Unicode, tetapi tidak berhasil.
byte[] inputByteArray = Pengkodean.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Pengkodean.Unicode.GetBytes(pToEncrypt);
//Tetapkan kunci dan offset objek terenkripsi
//Teks asli menggunakan metode GetBytes dari metode ASCIIEncoding.ASCII.
// Membuat teks bahasa Inggris perlu dimasukkan saat memasukkan kata sandi
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = MemoryStream baru();
CryptoStream cs = CryptoStream baru(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Tulis array byte ke dalam aliran kripto
//(Ini akan berakhir di aliran memori)
cs.Write(inputByteArray, 0, inputByteArray.Panjang);
cs.FlushFinalBlock();
//Dapatkan kembali data dari aliran memori, dan menjadi string
StringBuilder ret = StringBuilder baru();
foreach(byte b di ms.ToArray())
{
//Format sebagai hex
ret.AppendFormat("{0:X2}",b);
}
ret.ToString();
kembali ret.ToString();
}
//metode dekripsi
Dekripsi string publik (string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = DESCryptoServiceProvider() baru;
//Masukkan string input ke dalam array byte
byte[] inputByteArray = byte baru[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Panjang / 2; x++)
{
int i = (Konversi.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
//Tetapkan kunci dan offset objek terenkripsi. Nilai ini penting dan tidak dapat diubah.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = MemoryStream baru();
CryptoStream cs = CryptoStream baru(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//Membuang data melalui aliran kripto ke dalam aliran memori
cs.Write(inputByteArray, 0, inputByteArray.Panjang);
cs.FlushFinalBlock();
//Dapatkan kembali data yang didekripsi dari aliran memori
//Buat objek StringBuild. CreateDecrypt menggunakan objek aliran, dan teks yang didekripsi harus diubah menjadi objek aliran.
StringBuilder ret = StringBuilder baru();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
//------Kode selesai--------------------
Catatan: Saat memasukkan kata sandi di sKey, Anda harus menggunakan karakter bahasa Inggris, peka huruf besar-kecil, dan jumlah karakter adalah 8, tidak lebih atau kurang, jika tidak maka akan terjadi kesalahan.
Saya menggunakan Windows2000 Server .Net Framework SP3, dan berhasil digunakan di asp.net di bawah VS.Net, dan enkripsi serta dekripsinya normal!