Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 27517|Jawab: 1

[Sumber] .net/c# Kode sumber terenkripsi CryptoJS aes

[Salin tautan]
Diposting pada 07/10/2017 17.39.00 | | | |
Baru-baru ini, saya melakukan fungsi login pasca simulasi, kata sandi login dienkripsi oleh CryptoJS aes, dan kemudian saya ingin menulis algoritme yang sesuai dalam C#
Pengantar algoritma enkripsi AES:

Standar Enkripsi Lanjutan (singkatan: AES), juga dikenal sebagai enkripsi Rijndael dalam kriptografi, adalah standar enkripsi blok yang diadopsi oleh pemerintah federal AS. Standar ini digunakan untuk menggantikan DES asli dan telah dianalisis dan digunakan secara luas di seluruh dunia. Setelah proses seleksi selama lima tahun, Advanced Cryptographic Standard diterbitkan oleh National Institute of Standards and Technology (NIST) di FIPS PUB 197 pada tanggal 26 November 2001, dan menjadi standar yang berlaku pada tanggal 26 Mei 2002. Pada tahun 2006, Standar Enkripsi Lanjutan menjadi salah satu algoritme paling populer untuk kriptografi kunci simetris.

Algoritma js adalah sebagai berikut:



Saya mencari situs web enkripsi AES online di Internet, dan hasilnya berbeda dari enkripsi saya sendiri, AES tampaknya memiliki banyak mode, dan saya telah melihat perkenalan orang lain dari Internet


Mulailah dengan menyiapkan teks biasa dan kunci:
var plaintText = 'aaaaaaaaaaaaaaaa'; Teks biasa
var keyStr = 'bbbbbbbb'; Umumnya, kuncinya adalah string  
Menurut dokumentasi situs web resmi, metode AES mendukung AES-128, AES-192 dan AES-256, dan metode enkripsi yang digunakan dalam proses enkripsi tergantung pada jenis kunci yang masuk, jika tidak maka akan dienkripsi sesuai dengan AES-256.
CryptoJS mendukung AES-128, AES-192, dan AES-256. Ini akan memilih varian berdasarkan ukuran kunci yang Anda lewati. Jika Anda menggunakan frasa sandi, maka itu akan menghasilkan kunci 256-bit.
Karena Java diberikan sesuai dengan 128bit, tetapi karena itu adalah string, itu perlu dikonversi menjadi 128bit di frontend.
Pada awalnya, saya berpikir bahwa menggunakan CryptoJS.enc.Hex.parse akan mengubahnya dengan benar menjadi kunci 128-bit. Tapi sebaliknya ...
Setelah banyak percobaan, Anda perlu menggunakan metode CryptoJS.enc.Utf8.parse untuk mengonversi kunci menjadi 128-bit. Nah, karena dikatakan bahwa itu adalah beberapa upaya, maka alasannya tidak diketahui, dan akan dipelajari lebih dalam nanti.
Sebelum menggunakan kunci jenis string, Anda perlu mengurai dengan uft8 sebelum dapat menggunakannya
var key = CryptoJS.enc.Utf8.parse(keyStr);  
Karena backend menggunakan PKCS5Padding, tetapi ketika menggunakan CryptoJS, ditemukan bahwa tidak ada offset sama sekali.
Enkripsi
var encryptedData = CryptoJS.AES.encrypt(plaintText, kunci, {  
    mode: CryptoJS.mode.ECB,
    bantalan: CryptoJS.pad.Pkcs7
});
Karena ciphertext yang dihasilkan oleh CryptoJS adalah objek, jika Anda mengonversinya langsung ke string adalah Base64 yang dikodekan, atribut pada encryptedData.ciphertext dikonversi menjadi string adalah format yang diperlukan oleh backend.
var encryptedBase64Str = encryptedData.toString();
Keluaran: 'RJcecVhTqCHHnlibzTypzuDvG8kjWC+ot8JuxWVdLgY='
console.log(dienkripsiBase64Str);
Anda perlu membaca ciphertext.toString() di encryptedData untuk mendapatkan ciphertext yang sama dengan Java
var encryptedStr = encryptedData.ciphertext.toString();  
Keluaran: '44971e715853a821c79e589bcd3ca9cee0ef1bc923582fa8b7c26ec5655d2e06'
console.log(enkripsiStr);  
Karena teks sandi terenkripsi adalah string 128-bit, itu perlu dikonversi ke format yang dikodekan Base64 saat mendekripsi.
Kemudian Anda perlu menggunakan metode CryptoJS.enc.Hex.parse untuk mengonversinya menjadi heksadesimal, lalu menggunakan CryptoJS.enc.Base64.stringify untuk mengubahnya menjadi string yang dikodekan Base64, dan kemudian Anda dapat meneruskannya ke metode CryptoJS.AES.decrypt untuk mendekripsinya.
Untuk mendapatkan ciphertext dari jenis string, Anda perlu menguraikannya dengan metode Hex terlebih dahulu
var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);
Mengonversi teks sandi ke string Base64
Hanya ciphertext string tipe Base64 yang dapat mendekripsinya
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(terenkripsiHexStr);  
String yang dikonversi ke pengkodean Base64 dapat diteruskan ke metode CryptoJS.AES.decrypt untuk operasi dekripsi.
Dekripsi
var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, kunci, {  
    mode: CryptoJS.mode.ECB,
    bantalan: CryptoJS.pad.Pkcs7
});
Setelah dekripsi CryptoJS, itu masih merupakan objek, dan mengubahnya menjadi teks biasa perlu dikonversi menjadi string dalam format Utf8.
Setelah dekripsi, string teks biasa perlu ditransposisi dengan cara Utf8
var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);  
console.log(decryptedStr); 'aaaaaaaaaaaaaaaaaaa'




Berikut adalah kode sumber untuk implementasi .NET/C# AES:







Mantan:[12306] Maaf, karena Anda terlalu sering mengoperasikan penumpang, silakan coba lagi besok
Depan:C# mengimplementasikan memori pembagian file pemetaan memori proses
Diposting pada 29/05/2018 00.27.20 |
Lihat kode sumber lanjutan dari pria besar
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com