2010-02-02 30 views
8

Tôi muốn tạo khóa riêng trong java, lưu nó dưới dạng chuỗi được mã hóa 64 trong một số tệp và sau đó mã hóa một số cụm từ trong C# bằng cách sử dụng tệp đã lưu này. Tôi biết để tạo khóa trong java và mã hóa nó với 64 cơ sở. Câu hỏi của tôi là làm cách nào để sử dụng khóa này trong C#? Đây là một nguyên mẫu mã java để lưu khóa bí mật vào một file text:RSA: Cách tạo khóa riêng trong java và sử dụng nó trong C#?

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(1024, RSAKeyGenParameterSpec.F4); 
keyGen.initialize(spec); 
KeyPair keyPair = keyGen.generateKeyPair(); 
PrivateKey privateKey = keyPair.getPrivate(); 
writeToFile("privateKey", Base64.encode(keyPair.getPrivate().getEncoded())); 

Tôi muốn thực hiện chức năng sau trong C# nhưng không thể tìm cách tạo RSAParameters hoặc RSACryptoServiceProvider từ tin chính

public static string DecryptData(string privateKey64Base, string data64Base) 
{ 
    // create using privateKey64Base 
    // create RSACryptoServiceProvider rsa using RSAParameters above 
    // byte[] encryptedData = rsa.Encrypt(Convert.FromBase64String(data64Base); 
} 
+0

Tôi chắc chắn rằng đã được yêu cầu ... Tôi chỉ không thể tìm thấy –

Trả lời

5

This page chứa lời khuyên cho tình huống của bạn, vì bạn đang viết ra PKCS # 8 phím (với keyPair.getPrivate(). getEncoded())

Sử dụng phương pháp này, bạn sẽ sử dụng tiện ích ở phía Java để lấy khóa riêng tư thành định dạng PRIVATEKEYBLOB ngay từ đầu.

Hoặc, bạn có thể sử dụng BouncyCastle C# có thể đọc khóa (xem ví dụ: Org.BouncyCastle.Security.PrivateKeyFactory.CreateKey - trước tiên bạn cần giải mã Base64).

câu hỏi trước này có câu trả lời để chuyển đổi từ kết quả các đối tượng chủ chốt BC để RSACryptoServiceProvider: BouncyCastle RSAPrivateKey to .NET RSAPrivateKey

Thứ ba, bạn có thể muốn xem xét sử dụng một keystore, ví dụ PKCS # 12, là một cách tiêu chuẩn (và an toàn hơn) để lưu trữ khóa riêng tư.

+0

Cảm ơn! Bạn có thể giới thiệu bất kỳ đọc nào trên kho khóa không? Tôi gặp nó khá thường xuyên nhưng tôi không hiểu khái niệm. – Moisei

+0

+1, tôi không thể truy cập bài viết trong vài ngày vì trang web không khả dụng, sẽ rất tuyệt nếu bạn có thể dán mã ở đây hoặc thêm tham chiếu đến các trang web liên tục hơn như Github. – AaA

Các vấn đề liên quan