Membuat kunci untuk enkripsi dan dekripsi
Membuat dan mengelola kunci adalah bagian penting dari proses kriptografi. Algoritma simetris memerlukan pembuatan kunci dan vektor inisialisasi (IV). Anda harus menyimpan rahasia kunci ini dari siapa pun yang tidak boleh mendekripsi data Anda. IV tidak harus rahasia tetapi harus diubah untuk setiap sesi. Algoritma asimetris memerlukan pembuatan kunci publik dan kunci privat. Kunci publik dapat diketahui oleh siapa pun, tetapi pihak yang mendekripsi hanya boleh mengetahui kunci privat yang sesuai. Bagian ini menjelaskan cara menghasilkan dan mengelola kunci untuk algoritma simetris dan asimetris.
Kunci Konten
Kelas enkripsi simetris yang disediakan oleh .NET memerlukan kunci dan IV baru untuk mengenkripsi dan mendekripsi data. Kunci baru dan IV secara otomatis dibuat saat Anda membuat instans baru dari salah satu kelas kriptografi simetris terkelola menggunakan metode tanpa Create()
parameter. Siapa pun yang Anda izinkan untuk mendekripsi data Anda harus memiliki kunci dan IV yang sama dan menggunakan algoritma yang sama. Umumnya, kunci baru dan IV harus dibuat untuk setiap sesi, dan kunci maupun IV tidak boleh disimpan untuk digunakan dalam sesi selanjutnya.
Untuk mengomunikasikan kunci konten dan IV ke pihak jarak jauh, Anda biasanya mengenkripsi kunci konten dengan menggunakan enkripsi asimetris. Mengirim kunci di seluruh jaringan yang tidak aman tanpa enkripsi tidak aman karena siapa pun yang mencegat kunci dan IV kemudian dapat mendekripsi data Anda.
Contoh berikut menunjukkan pembuatan instans baru kelas implementasi default untuk Aes algoritma:
Dim aes As Aes = Aes.Create()
Aes aes = Aes.Create();
Eksekusi kode sebelumnya menghasilkan kunci baru dan IV dan menetapkannya sebagai nilai untuk properti Kunci dan IV .
Terkadang Anda mungkin perlu menghasilkan beberapa kunci. Dalam situasi ini, Anda dapat membuat instans baru kelas yang mengimplementasikan algoritma simetris. Kemudian, buat kunci baru dan IV dengan memanggil GenerateKey
metode dan GenerateIV
. Contoh kode berikut menggambarkan cara membuat kunci dan IV baru setelah instans baru kelas kriptografi simetris dibuat:
Dim aes As Aes = Aes.Create()
aes.GenerateIV()
aes.GenerateKey()
Aes aes = Aes.Create();
aes.GenerateIV();
aes.GenerateKey();
Eksekusi kode sebelumnya membuat instans Aes
baru dan menghasilkan kunci dan IV. Kunci lain dan IV dibuat ketika GenerateKey
metode dan GenerateIV
dipanggil.
Kunci Asimetris
.NET menyediakan kelas RSA untuk enkripsi asimetris. Saat Anda menggunakan metode tanpa Create()
parameter untuk membuat instans baru, RSA kelas membuat pasangan kunci publik/privat. Kunci asimetris dapat disimpan untuk digunakan dalam beberapa sesi atau dibuat hanya untuk satu sesi. Meskipun Anda dapat membuat kunci publik tersedia, Anda harus menjaga kunci privat dengan ketat.
Pasangan kunci publik/privat dihasilkan saat Anda membuat instans baru kelas algoritma asimetris. Setelah membuat instans baru kelas, Anda dapat mengekstrak informasi utama menggunakan metode .ExportParameters Metode ini mengembalikan RSAParameters struktur yang menyimpan informasi utama. Metode ini juga menerima nilai Boolean yang menunjukkan apakah hanya mengembalikan informasi kunci publik atau mengembalikan kunci publik dan informasi kunci privat.
Anda juga dapat menggunakan metode lain untuk mengekstrak informasi utama, seperti:
- RSA.ExportRSAPublicKey
- RSA.ExportRSAPrivateKey
- AsymmetricAlgorithm.ExportSubjectPublicKeyInfo
- AsymmetricAlgorithm.ExportPkcs8PrivateKey
- AsymmetricAlgorithm.ExportEncryptedPkcs8PrivateKey
Anda dapat menggunakan ImportParameters metode untuk menginisialisasi RSA
instans ke nilai RSAParameters
struktur. Atau Anda dapat menggunakan RSA.Create(RSAParameters) metode untuk membuat instans baru.
Jangan pernah menyimpan kunci privat asimetris verbatim atau sebagai teks biasa di komputer lokal. Jika Anda perlu menyimpan kunci privat, Anda harus menggunakan kontainer kunci. Untuk informasi selengkapnya tentang cara menyimpan kunci privat dalam kontainer kunci, lihat Cara: Menyimpan Kunci Asimetris dalam Kontainer Kunci.
Contoh kode berikut membuat instans RSA
baru kelas, membuat pasangan kunci publik/privat, dan menyimpan informasi kunci publik ke RSAParameters
struktur:
'Generate a public/private key pair.
Dim rsa as RSA = RSA.Create()
'Save the public key information to an RSAParameters structure.
Dim rsaKeyInfo As RSAParameters = rsa.ExportParameters(false)
//Generate a public/private key pair.
RSA rsa = RSA.Create();
//Save the public key information to an RSAParameters structure.
RSAParameters rsaKeyInfo = rsa.ExportParameters(false);
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk