Mã hóa và giải mã mật khẩu [đã đóng]


8

Tôi đã lưu trữ mật khẩu dưới dạng văn bản thuần túy trong một tệp txt. Bây giờ tôi muốn viết kịch bản sẽ đọc văn bản đơn giản từ tệp txt và sau đó nó sẽ mã hóa nó và giải mã nó.


Đó là gì"? Tại sao bạn không sử dụng một công cụ như GnuPG để làm điều này?
Kusalananda

Câu trả lời:


13

Mã hóa mật khẩu là vô ích khi bạn không thể giữ nó được mã hóa. Ngay khi bạn giải mã nó, nó lại dễ bị tổn thương.

Bất kể chúng khó mã hóa đến mức nào, các phương thức mã hóa và giải mã đều có ngay cho bất cứ ai nhìn thấy và sao chép-dán. Điều đó chỉ làm cho nó sillier.

chmodsẽ bảo vệ chống rình mò tốt hơn nhiều so với máy rube goldberg, nhưng với một số công việc bạn có thể tránh được việc sử dụng mật khẩu được lưu trữ, đó sẽ là một điều rất tốt. Bởi vì: Mật khẩu được lưu trữ đáng tin cậy là khoai tây nóng bảo mật và cần tránh. Họ là một ý tưởng tồi như vậy sudo, su, ssh, scp, và sftpkhông chỉ tránh cho họ, họ đang tất cả các thiết kế đặc biệt để ngăn chặn bạn sử dụng chúng quá.

Nếu bạn có kế hoạch yêu cầu mật khẩu sử dụng hạn chế, nhưng tôi sẽ giải trí khả năng tự động hóa hoạt động hoặc một cái gì đó, bạn có thể sử dụng một tiện ích như openssl.

$ echo foobar | openssl enc -aes-128-cbc -a -salt -pass pass:asdffdsa
U2FsdGVkX1/lXSnI4Uplc6DwDPPUQ/WjHULJoKypTO8=

$ echo U2FsdGVkX1/lXSnI4Uplc6DwDPPUQ/WjHULJoKypTO8= | openssl enc -aes-128-cbc -a -d -salt -pass pass:asdffdsa
foobar

Ngoài ra, bạn có thể làm điều này,

$ touch pass.txt && echo foobar > pass.txt
$ openssl bf -a -salt -in pass.txt -out secret && rm -f pass.txt
enter bf-cbc encryption password:
Verifying - enter bf-cbc encryption password:

$ openssl bf -d -a -in secret -out pass.txt
enter bf-cbc decryption password:

$ cat pass.txt
foobar

1
Nói chung không phải là một ý tưởng tốt để giữ mật khẩu được mã hóa xung quanh. Tốt hơn là lưu trữ tro, và khi so sánh một chuỗi với mật khẩu, bạn mã hóa lại nó với cùng một thuật toán và so sánh tro. Cấp, đó không phải là những gì OP yêu cầu, nhưng sẽ là đề xuất của tôi.
Rui F Ribeiro

1
@RuiFRibeiro đó là những gì tôi đã nói Mã hóa mật khẩu là vô ích khi bạn không thể giữ nó được mã hóa. Ngay khi bạn giải mã nó, nó lại dễ bị tổn thương. Ban đầu tôi đã nghĩ đến việc viết nó, nhưng dù sao cũng cảm ơn vì đã nhắc nhở tôi, tôi sẽ cập nhật nó sớm.
Raul

Cảm ơn mã. Tôi tự hỏi làm thế nào aes-128 mạnh mẽ. Mật mã mạnh nhất mà openssl hiện tại có thể cung cấp để tôi có thể sử dụng nó ở đây là gì? Cảm ơn.
user180574

5

Âm thanh như bạn có thể muốn phát minh lại bánh xe. Đề xuất cá nhân của tôi sẽ là tạo một tệp văn bản có mật khẩu bạn muốn, sắp xếp theo cách thẩm mỹ cho bạn (tên người dùng, mật khẩu duy nhất và trang web thuộc về mỗi dòng?).

Tạo khóa RSA 4096 bit bằng cách gpg --full-gen-keychọn "RSA và RSA". Hoặc, chết tiệt, 2048-bit vẫn an toàn để sử dụng về mặt kỹ thuật. Chỉ cần không đi thấp hơn 2048-bit.

gpg -e passwords.txt để mã hóa tập tin với mật khẩu trong đó.

Nhập tên của người nhận (sẽ là bạn). Sau đó, khi nó kết thúc, xác minh rằng password.txt.gpgtồn tại. Sau đó xóa mật khẩu gốc (không được mã hóa).

Bây giờ là phần dễ dàng.

Khi bạn muốn một trong những mật khẩu trong tệp, hãy chạy gpg -d passwords.txt.gpg

Tất cả những gì bạn phải nhớ là một mật khẩu bạn đã chọn khi tạo khóa RSA và nội dung không được mã hóa sẽ được chuyển ra thiết bị xuất chuẩn (thiết bị đầu cuối bạn đang sử dụng). Dễ dàng vắt chanh.

Một thay thế cho RSA sẽ là sử dụng phương pháp tạo khóa này:

gpg --full-gen-key --expert

sau đó chọn Tùy chọn 9 - "ECC và ECC". đối với Thuật toán, chọn Brainpool P-512. Tạo khóa nhanh hơn nhiều so với RSA và an toàn với kích thước khóa nhỏ hơn. Sở thích cá nhân thực sự. Phần còn lại của câu trả lời của tôi (mã hóa / giải mã tập tin mật khẩu) vẫn được áp dụng.

Ngoài ra, bạn có thể đi theo con đường siêu dễ dàng và chỉ cần sử dụng phần mềm có sẵn như KeePassX để lưu trữ mật khẩu được mã hóa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.