Điểm:1

Hoàn thành mã hóa RSA

lá cờ bl

Là người mới sử dụng mật mã, tôi đang cố gắng hiểu cách hoàn thành mã hóa RSA bằng tay. Tôi chỉ có thể làm theo công thức cho đến nay trước khi trở nên rất bối rối.

Tôi muốn mã hóa giá trị "123"

Đầu tiên, tôi chọn 2 số nguyên tố. Tôi chọn: $$p = 101\ q = 103$$

Tiếp theo, tôi tính toán: $$n = p\cdot q = 10403$$.

Sau đó, tôi tính toán: $$\varphi(n) = (p-1)\cdot(q-1) = 10200$$

Bây giờ, tôi muốn chọn một số mũ công khai, và tôi chọn 3 cho việc này.

Tôi tin rằng công thức để sử dụng là: $$d = e^{â1}\bmod\varphi(n)$$

Tôi không hiểu cách cắm công thức này vào, cũng như không biết cách mã hóa "123" bằng công thức này. Ngoài ra, tôi cũng không biết làm cách nào để tìm số mũ giải mã.

Bất kì sự trợ giúp nào đều được đánh giá cao!

dave_thompson_085 avatar
lá cờ cn
e (và cả d, nhưng bạn không chọn cái đó) phải nguyên tố cùng nhau với p-1 và q-1. Q-1 của bạn là 102 và 3 không đồng nguyên tố với 102. Nếu bạn muốn bảo mật thực sự, điều không thể với kích thước đồ chơi nhỏ như thế này, thì việc chọn p và q liền kề hoặc gần là sai. d có thể được tính là e nghịch đảo mod _either_ phi(n) (Euler) _or_ lambda(n) (Carmichael). Tất cả những điều trên được bao phủ bởi wikipedia và bởi rất nhiều Q hiện có.
fgrieu avatar
lá cờ ng
Như đã nêu ở trên, lựa chọn $e$ của bạn không tương thích với lựa chọn $q$ của bạn. Để tính toán $d$, hãy xem (half-)[thuật toán Euclide mở rộng](https://en.wikipedia.org/wiki/Extends_Euclidean_algorithm#Computing_multiplicative_inverses_in_modular_structures) hoặc [điều này](https://crypto.stackexchange.com /q/5889/555). Mã hóa RSA trong sách giáo khoa là mỗi $m\to c=m^e\bmod n$. Quá trình giải mã được thực hiện theo $c\to m=c^d\bmod n$. Những tính toán này là [lũy thừa mô-đun](https://en.wikipedia.org/wiki/Modular_exponentiation).
jjj avatar
lá cờ cn
jjj
Trong thực tế, p và q không nên quá gần nhau, bởi vì điều này làm cho n trở thành nhân tử dễ dàng. (Chỉ kể thôi vì bạn chọn p và q gần nhau)
Điểm:1
lá cờ in

Về cơ bản, Fgrieu đã đưa ra câu trả lời trong nhận xét, tôi sẽ cố gắng giải thích một chút ở dạng câu trả lời.

Bạn có thể sử dụng thuật toán euclide mở rộng để tìm d từ e, nhưng lưu ý rằng e bạn đã chọn sẽ không hoạt động. Vì e không nguyên tố cùng nhau $\varphi(n)$ Bạn cần chọn một cái khác. Để đạt hiệu quả, chúng tôi thường muốn chọn một e nhỏ với một số bit được đặt, thường có dạng $2^k+1$ vì 3 không hoạt động, bạn có thể thử những cái khác. https://en.wikipedia.org/wiki/Extends_Euclidean_algorithm Đây là một máy tính trực tuyến: https://planetcalc.com/3298/

Nó sẽ không chỉ cung cấp cho bạn gcd (cần phải là 1) mà còn cung cấp cho bạn a,b sao cho: $a*e + b*\varphi(n) = 1$ về cơ bản có nghĩa là $a*e = 1 mod \varphi(n)$ đó là những gì chúng tôi muốn.

Sau đó, bạn mã hóa bằng cách tính toán $c = m^e\không gian mod(n)$ và giải mã bằng cách sử dụng $m = c^d\không gian mod(n)$ Cả hai được thực hiện thông qua https://en.wikipedia.org/wiki/Modular_exponentiation

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.