- หน้าแรก
- เข้ารหัสลับ
- เข้ารหัส / ถอดรหัส RSA
เข้ารหัสและถอดรหัส RSA
เข้ารหัสด้วยคีย์สาธารณะ RSA และถอดรหัสด้วยคีย์ส่วนตัว (OAEP หรือ PKCS#1 v1.5)
openssl pkeyutl -decrypt -inkey private.pem -in ciphertext.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256เข้ารหัสข้อมูลลับสั้น ๆ ด้วยคีย์สาธารณะ RSA ของผู้รับ (หรือใบรับรองของเขา) เพื่อให้เฉพาะผู้ถือคีย์ส่วนตัวอ่านได้ หรือถอดรหัสข้อความเข้ารหัสด้วยคีย์ส่วนตัวของคุณ เลือก OAEP กับ SHA-256 (แนะนำ), OAEP กับ SHA-1 หรือ PKCS#1 v1.5 ผลลัพธ์เป็น Base64 หรือ hex และใช้ร่วมกับ OpenSSL ได้ ทุกอย่างทำงานในเบราว์เซอร์ คีย์และข้อความจึงไม่ออกจากอุปกรณ์ของคุณ ใช้ฟรีและไม่ต้องสมัครสมาชิก
วิธีเข้ารหัสและถอดรหัสด้วย RSA
- เลือก “เข้ารหัส” หรือ “ถอดรหัส” แล้ววางคีย์หรือเปิดไฟล์คีย์ ใช้คีย์สาธารณะหรือใบรับรองเพื่อเข้ารหัส และคีย์ส่วนตัว (PKCS#8 หรือ PKCS#1) เพื่อถอดรหัส
- เลือก padding: OAEP · SHA-256 เว้นแต่อีกฝั่งต้องการแบบอื่น
- พิมพ์ข้อความ หรือวางข้อความเข้ารหัสแบบ Base64 หรือ hex ผลลัพธ์จะแสดงขึ้นขณะพิมพ์
- คัดลอกผลลัพธ์ หรือดาวน์โหลดข้อความเข้ารหัสเป็นไฟล์ .bin สำหรับ OpenSSL
ความสามารถ
- เข้ารหัสด้วยคีย์สาธารณะ ใบรับรอง หรือส่วนคีย์สาธารณะของคีย์ส่วนตัว และถอดรหัสด้วยคีย์ส่วนตัว
- OAEP กับ SHA-256 (ค่าเริ่มต้น), OAEP กับ SHA-1 หรือ PKCS#1 v1.5
- คีย์แบบ PEM หรือ DER: SPKI, PKCS#1, PKCS#8 และใบรับรอง X.509 สูงสุด 16384 บิต
- ข้อความเข้ารหัสเป็น Base64 หรือ hex หรือไฟล์ .bin และถอดรหัส Base64 หรือ hex ที่วาง หรือไฟล์ .bin ที่เปิดได้
- แสดงจำนวนไบต์ที่คีย์และ padding เข้ารหัสได้ พร้อมคำสั่ง openssl pkeyutl ที่ตรงกัน
- ทำงานใน WebAssembly worker ในเบราว์เซอร์ของคุณ
เป็นส่วนตัวหรือไม่
ใช่ การเข้ารหัสและถอดรหัสทำงานในเบราว์เซอร์ของคุณ ภายใน WebAssembly worker คีย์ ข้อความ และข้อความเข้ารหัสไม่เคยถูกอัปโหลดหรือเก็บไว้
คำถามที่พบบ่อย
ข้อความยาวได้แค่ไหน
RSA เข้ารหัสได้หนึ่งบล็อก สำหรับคีย์ 2048 บิต ได้สูงสุด 190 ไบต์เมื่อใช้ OAEP SHA-256, 214 ไบต์เมื่อใช้ OAEP SHA-1 และ 245 ไบต์เมื่อใช้ PKCS#1 v1.5 คีย์ที่ใหญ่กว่ารับได้มากกว่า สำหรับข้อมูลที่ยาวกว่านั้น ให้เข้ารหัสด้วย cipher แบบสมมาตร หรือใช้เครื่องมือเข้ารหัสไฟล์
ทำไมข้อความเข้ารหัสจึงไม่เหมือนเดิมทุกครั้ง
เพราะ padding ทุกแบบเติมไบต์สุ่มก่อนเข้ารหัส ข้อความเดียวกันจึงได้ข้อความเข้ารหัสใหม่ทุกครั้ง นี่เป็นไปตามการออกแบบ และทุกชุดถอดรหัสได้เป็นข้อความเดียวกัน
ใช้ร่วมกับ OpenSSL ได้ไหม
ได้ ข้อความเข้ารหัสที่สร้างที่นี่ถอดรหัสได้ด้วย openssl pkeyutl -decrypt -inkey private.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 (หรือ rsa_padding_mode:pkcs1) และข้อความเข้ารหัสที่สร้างด้วย openssl pkeyutl -encrypt ก็ถอดรหัสที่นี่ได้ ใช้ padding เดียวกันทั้งสองฝั่ง
ใช้คีย์รูปแบบไหนได้บ้าง
คีย์สาธารณะแบบ PEM (BEGIN PUBLIC KEY หรือ BEGIN RSA PUBLIC KEY) ใบรับรอง และคีย์ส่วนตัวที่ไม่เข้ารหัสแบบ PKCS#8 (BEGIN PRIVATE KEY) หรือ PKCS#1 (BEGIN RSA PRIVATE KEY) รวมถึงไฟล์ DER ด้วย คีย์ที่ป้องกันด้วยรหัสผ่านและคีย์ OpenSSH ต้องแปลงก่อน ซึ่งเครื่องมือจะบอกวิธีให้
ทำไมถอดรหัสไม่สำเร็จ
ส่วนใหญ่เป็นเพราะ padding หรือคีย์ ต้องถอดรหัสด้วย padding เดียวกับที่ใช้เข้ารหัส และด้วยคีย์ส่วนตัวที่คู่กับคีย์สาธารณะที่ใช้ เครื่องมือตั้งใจไม่แยกบอกสาเหตุเหล่านี้ จึงควรลอง padding แบบอื่น ข้อความเข้ารหัสยาวเท่ากับคีย์เสมอ (256 ไบต์สำหรับคีย์ 2048 บิต) หากสั้นกว่านั้นแสดงว่าถูกตัดขาดตอนคัดลอก