Toolonit
  1. หน้าแรก
  2. เข้ารหัสลับ
  3. เข้ารหัส / ถอดรหัส RSA

เข้ารหัสและถอดรหัส RSA

เข้ารหัสด้วยคีย์สาธารณะ RSA และถอดรหัสด้วยคีย์ส่วนตัว (OAEP หรือ PKCS#1 v1.5)

Padding

ถอดรหัสด้วย padding แบบเดียวกับที่ใช้เข้ารหัส OAEP กับ SHA-256 เป็นค่าเริ่มต้นสมัยใหม่ ส่วน PKCS#1 v1.5 ใช้กับระบบรุ่นเก่าเท่านั้น

ผลลัพธ์เป็น
ถอดรหัสด้วย OpenSSL (ไฟล์ .bin):
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

  1. เลือก “เข้ารหัส” หรือ “ถอดรหัส” แล้ววางคีย์หรือเปิดไฟล์คีย์ ใช้คีย์สาธารณะหรือใบรับรองเพื่อเข้ารหัส และคีย์ส่วนตัว (PKCS#8 หรือ PKCS#1) เพื่อถอดรหัส
  2. เลือก padding: OAEP · SHA-256 เว้นแต่อีกฝั่งต้องการแบบอื่น
  3. พิมพ์ข้อความ หรือวางข้อความเข้ารหัสแบบ Base64 หรือ hex ผลลัพธ์จะแสดงขึ้นขณะพิมพ์
  4. คัดลอกผลลัพธ์ หรือดาวน์โหลดข้อความเข้ารหัสเป็นไฟล์ .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 บิต) หากสั้นกว่านั้นแสดงว่าถูกตัดขาดตอนคัดลอก

เครื่องมือที่เกี่ยวข้อง