Chuỗi giải mã mã hóa đơn giản python
Mật mã là nghệ thuật giao tiếp giữa hai người dùng thông qua các tin nhắn được mã hóa. Khoa học về mật mã xuất hiện với động cơ cơ bản là cung cấp bảo mật cho các thông điệp bí mật được chuyển từ bên này sang bên khác Show
Mật mã được định nghĩa là nghệ thuật và khoa học che giấu thông điệp để giới thiệu quyền riêng tư và bí mật như được công nhận trong bảo mật thông tin Thuật ngữ mật mã họcCác thuật ngữ thường được sử dụng trong mật mã được giải thích ở đây - Văn bản thôTin nhắn văn bản thuần túy là văn bản có thể đọc được và có thể được hiểu bởi tất cả người dùng. Văn bản thuần túy là thông điệp trải qua quá trình mã hóa văn bản mật mãVăn bản mật mã là thông điệp thu được sau khi áp dụng mật mã trên văn bản thuần túy mã hóaQuá trình chuyển đổi văn bản thuần thành văn bản mật mã được gọi là mã hóa. Nó còn được gọi là mã hóa giải mãQuá trình chuyển đổi văn bản mật mã thành văn bản thuần túy được gọi là quá trình giải mã. Nó còn được gọi là giải mã Sơ đồ đưa ra dưới đây cho thấy một minh họa về quá trình mã hóa hoàn chỉnh - Đặc điểm của mật mã hiện đạiCác đặc điểm cơ bản của mật mã hiện đại như sau -
Mã hóa độ mạnh kép, còn được gọi là mã hóa nhiều lần, là quá trình mã hóa một hoặc nhiều lần một văn bản đã được mã hóa, bằng cùng một thuật toán/mẫu khác nhau Các tên gọi khác của mã hóa cường độ kép bao gồm mã hóa theo tầng hoặc mật mã theo tầng Các cấp độ mã hóa cường độ képMã hóa cường độ kép bao gồm các mức mã hóa khác nhau được giải thích ở đây dưới – Lớp mã hóa đầu tiênVăn bản mật mã được tạo từ thông báo có thể đọc được ban đầu bằng thuật toán băm và khóa đối xứng. Các khóa đối xứng sau này được mã hóa với sự trợ giúp của các khóa bất đối xứng. Minh họa tốt nhất cho mẫu này là kết hợp thông báo băm của văn bản mật mã vào một viên nang. Người nhận sẽ tính toán thông báo trước và sau đó giải mã văn bản để xác minh rằng văn bản không bị giả mạo ở giữa Lớp mã hóa thứ haiLớp mã hóa thứ hai là quá trình thêm một lớp nữa vào văn bản mật mã bằng thuật toán giống hoặc thuật toán khác. Thông thường, mật khẩu đối xứng dài 32 bit được sử dụng cho cùng Lớp mã hóa thứ baTrong quá trình này, gói mã hóa được truyền qua kết nối SSL/TLS tới đối tác liên lạc Sơ đồ sau đây cho thấy quá trình mã hóa kép bằng hình ảnh – Mật mã laiMật mã lai là quá trình sử dụng nhiều mật mã thuộc các loại khác nhau bằng cách bao gồm các lợi ích của từng mật mã. Có một cách tiếp cận phổ biến thường được áp dụng để tạo khóa bí mật ngẫu nhiên cho mật mã đối xứng và sau đó mã hóa khóa này thông qua mật mã khóa bất đối xứng Do mẫu này, bản thân thông điệp ban đầu được mã hóa bằng mật mã đối xứng và sau đó sử dụng khóa bí mật. Người nhận sau khi nhận được tin nhắn sẽ giải mã tin nhắn bằng khóa bí mật trước, sử dụng khóa riêng của mình và sau đó sử dụng khóa được chỉ định để giải mã tin nhắn Python là một ngôn ngữ mã nguồn mở, cấp cao, thông dịch, tương tác và hướng đối tượng. Nó được thiết kế để rất dễ đọc. Cú pháp của ngôn ngữ Python dễ hiểu và thường xuyên sử dụng các từ khóa tiếng Anh Các tính năng của ngôn ngữ PythonPython cung cấp các tính năng chính sau đây – Phiên dịchPython được xử lý trong thời gian chạy bằng trình thông dịch. Không cần biên dịch chương trình trước khi thực hiện. Nó tương tự như PERL và PHP hướng đối tượngPython tuân theo phong cách hướng đối tượng và các mẫu thiết kế. Nó bao gồm định nghĩa lớp với các tính năng khác nhau như đóng gói và đa hình Các điểm chính của ngôn ngữ PythonCác điểm chính của ngôn ngữ lập trình Python như sau –
Link tải về ngôn ngữ Python như sau − www. con trăn. org/downloadsNó bao gồm các gói dành cho các hệ điều hành khác nhau như các bản phân phối Windows, MacOS và Linux Chuỗi PythonKhai báo cơ bản của chuỗi được hiển thị bên dưới - str = 'Hello World!' Danh sách PythonDanh sách của python có thể được khai báo dưới dạng các kiểu dữ liệu phức hợp, được phân tách bằng dấu phẩy và được đặt trong dấu ngoặc vuông ([]) list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] Bộ dữ liệu PythonMột bộ là kiểu dữ liệu động của Python bao gồm một số giá trị được phân tách bằng dấu phẩy. Tuples được kèm theo dấu ngoặc đơn tinytuple = (123, 'john') Từ điển PythonTừ điển Python là một loại bảng băm. Khóa từ điển có thể là hầu hết mọi loại dữ liệu của Python, thường là số hoặc chuỗi tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'} Gói mật mãPython bao gồm một gói có tên là mật mã cung cấp các công thức và nguyên hàm mật mã. Nó hỗ trợ Python 2. 7, Trăn 3. 4+ và PyPy 5. 3+. Quá trình cài đặt cơ bản của gói mật mã được thực hiện thông qua lệnh sau - pip install cryptography Có nhiều gói khác nhau với cả công thức nấu ăn cấp cao và giao diện cấp thấp cho các thuật toán mã hóa phổ biến như mật mã đối xứng, bản tóm tắt thông báo và hàm dẫn xuất chính Trong suốt hướng dẫn này, chúng tôi sẽ sử dụng các gói Python khác nhau để triển khai các thuật toán mã hóa Chương trước đã cung cấp cho bạn tổng quan về cài đặt Python trên máy tính cục bộ của bạn. Trong chương này, bạn sẽ tìm hiểu chi tiết về mật mã ngược và mã hóa của nó Thuật toán mật mã ngượcThuật toán mã hóa ngược có các tính năng sau -
Hạn chếNhược điểm chính của mật mã ngược là nó rất yếu. Một hacker có thể dễ dàng phá vỡ văn bản mật mã để lấy tin nhắn gốc. Do đó, mật mã ngược không được coi là lựa chọn tốt để duy trì kênh liên lạc an toàn, Ví dụXem xét một ví dụ trong đó câu lệnh Đây là chương trình để giải thích mật mã ngược sẽ được thực hiện với thuật toán mật mã ngược. Mã python sau đây sử dụng thuật toán để lấy đầu ra message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated) đầu raBạn có thể thấy văn bản bị đảo ngược, đó là đầu ra như trong hình dưới đây – Giải trình
Trong chương trước, chúng ta đã xử lý mật mã ngược. Chương này nói chi tiết về mật mã Caesar Thuật toán mật mã CaesarThuật toán của mật mã Caesar có các tính năng sau -
Sơ đồ sau đây mô tả hoạt động của việc triển khai thuật toán mật mã Caesar - Việc thực hiện chương trình của thuật toán mật mã Caesar như sau - def encrypt(text,s): result = "" # transverse the plain text for i in range(len(text)): char = text[i] # Encrypt uppercase characters in plain text if (char.isupper()): result += chr((ord(char) + s-65) % 26 + 65) # Encrypt lowercase characters in plain text else: result += chr((ord(char) + s - 97) % 26 + 97) return result #check the above function text = "CEASER CIPHER DEMO" s = 4 print "Plain Text : " + text print "Shift pattern : " + str(s) print "Cipher: " + encrypt(text,s) đầu raBạn có thể thấy mật mã Caesar, đó là đầu ra như trong hình dưới đây - Giải trìnhKý tự văn bản thuần túy được duyệt qua từng ký tự một
Hack thuật toán mật mã CaesarVăn bản mật mã có thể bị tấn công với nhiều khả năng khác nhau. Một trong những khả năng như vậy là Kỹ thuật Brute Force, liên quan đến việc thử mọi khóa giải mã có thể. Kỹ thuật này không đòi hỏi nhiều nỗ lực và tương đối đơn giản đối với một hacker. Việc triển khai chương trình để hack thuật toán mật mã Caesar như sau - message = 'GIEWIVrGMTLIVrHIQS' #encrypted message LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for key in range(len(LETTERS)): translated = '' for symbol in message: if symbol in LETTERS: num = LETTERS.find(symbol) num = num - key if num < 0: num = num + len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symbol print('Hacking key #%s: %s' % (key, translated)) Xem xét văn bản mật mã được mã hóa trong ví dụ trước. Sau đó, đầu ra với các phương pháp hack có thể có bằng khóa và sử dụng kỹ thuật tấn công vũ phu như sau - Đến đây các bạn đã được học về thuật toán mã hóa ngược và thuật toán mã hóa Caesar. Bây giờ, chúng ta hãy thảo luận về thuật toán ROT13 và cách triển khai thuật toán này Giải thích thuật toán ROT13Mật mã ROT13 đề cập đến dạng viết tắt Xoay theo 13 vị trí. Đây là trường hợp đặc biệt của Mật mã Caesar trong đó shift luôn là 13. Mỗi chữ cái được dịch chuyển 13 vị trí để mã hóa hoặc giải mã tin nhắn Ví dụSơ đồ sau đây giải thích quá trình thuật toán ROT13 bằng hình ảnh – Mã chương trìnhChương trình triển khai thuật toán ROT13 như sau - ________số 8_______Bạn có thể thấy đầu ra ROT13 như trong hình dưới đây – Hạn chếThuật toán ROT13 sử dụng 13 ca. Do đó, rất dễ dàng dịch chuyển các ký tự theo cách ngược lại để giải mã văn bản mật mã. Phân tích thuật toán ROT13Thuật toán mật mã ROT13 được coi là trường hợp đặc biệt của Mật mã Caesar. Nó không phải là một thuật toán rất an toàn và có thể bị phá vỡ dễ dàng bằng phân tích tần số hoặc chỉ bằng cách thử 25 phím có thể trong khi ROT13 có thể bị phá vỡ bằng cách dịch chuyển 13 vị trí. Do đó, nó không bao gồm bất kỳ ứng dụng thực tế nào Mật mã chuyển vị là một thuật toán mật mã trong đó thứ tự của các bảng chữ cái trong bản rõ được sắp xếp lại để tạo thành một văn bản mật mã. Trong quá trình này, các bảng chữ cái văn bản thuần túy thực tế không được bao gồm Ví dụMột ví dụ đơn giản cho mật mã chuyển vị là mật mã chuyển vị cột trong đó mỗi ký tự trong văn bản thuần túy được viết theo chiều ngang với chiều rộng bảng chữ cái được chỉ định. Mật mã được viết theo chiều dọc, điều này tạo ra một văn bản mật mã hoàn toàn khác Hãy xem xét văn bản đơn giản xin chào thế giới và chúng ta hãy áp dụng kỹ thuật chuyển vị cột đơn giản như hình bên dưới Các ký tự văn bản thường được đặt theo chiều ngang và bản mã được tạo với định dạng dọc như. lỗ hổng lr. Bây giờ, người nhận phải sử dụng cùng một bảng để giải mã văn bản mật mã thành văn bản thuần túy Mã sốĐoạn mã chương trình sau minh họa cách triển khai cơ bản của kỹ thuật chuyển vị cột - def split_len(seq, length): return [seq[i:i + length] for i in range(0, len(seq), length)] def encode(key, plaintext): order = { int(val): num for num, val in enumerate(key) } ciphertext = '' for index in sorted(order.keys()): for part in split_len(plaintext, len(key)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO')) Giải trình
đầu raMã chương trình để triển khai cơ bản kỹ thuật chuyển vị cột cho đầu ra sau - Lưu ý - Các nhà phân tích mật mã đã quan sát thấy sự cải thiện đáng kể về bảo mật tiền điện tử khi kỹ thuật chuyển vị được thực hiện. Họ cũng lưu ý rằng việc mã hóa lại văn bản mật mã bằng cách sử dụng cùng một mật mã chuyển vị sẽ tạo ra khả năng bảo mật tốt hơn Trong chương trước, chúng ta đã tìm hiểu về Mã chuyển vị. Trong chương này, chúng ta hãy thảo luận về mã hóa của nó kẹp kim loạiCách sử dụng chính của plugin pyperclip trong ngôn ngữ lập trình Python là thực hiện mô-đun đa nền tảng để sao chép và dán văn bản vào khay nhớ tạm. Bạn có thể cài đặt mô-đun pyperclip python bằng lệnh như được hiển thị list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']0 Nếu yêu cầu đã tồn tại trong hệ thống, bạn có thể thấy đầu ra sau - Mã sốMã python để mã hóa mật mã chuyển vị trong đó pyperclip là mô-đun chính như bên dưới - list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']1 đầu raMã chương trình để mã hóa mật mã chuyển vị trong đó pyperclip là mô-đun chính cung cấp đầu ra sau - Giải trình
Trong chương này, bạn sẽ tìm hiểu quy trình giải mã mật mã chuyển vị Mã sốQuan sát đoạn mã sau để hiểu rõ hơn về việc giải mã một mật mã chuyển vị. Văn bản mật mã cho thông báo Mã chuyển vị với khóa là 6 được tìm nạp dưới dạng Toners raiCntisippoh list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']2 Giải trìnhBản mã và khóa nói trên là hai giá trị được lấy làm tham số đầu vào để giải mã hoặc giải mã bản mã theo kỹ thuật đảo ngược bằng cách đặt các ký tự theo định dạng cột và đọc theo chiều ngang. Bạn có thể đặt các chữ cái ở định dạng cột và sau đó kết hợp hoặc nối chúng lại với nhau bằng đoạn mã sau – list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']3 đầu raMã chương trình để giải mã mật mã chuyển vị cho đầu ra sau - Trong Python, có thể mã hóa và giải mã tệp trước khi truyền sang kênh liên lạc. Đối với điều này, bạn sẽ phải sử dụng plugin PyCrypto. Bạn có thể cài đặt plugin này bằng lệnh được cung cấp bên dưới list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']4 MãMã chương trình để mã hóa tệp bằng trình bảo vệ mật khẩu được đề cập bên dưới - list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']5 Bạn có thể sử dụng lệnh sau để thực hiện quá trình mã hóa cùng với mật khẩu – list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']6 đầu raBạn có thể quan sát đầu ra sau khi thực thi đoạn mã trên - Giải trìnhMật khẩu được tạo bằng thuật toán băm MD5 và các giá trị được lưu trữ trong các tệp sao lưu an toàn đơn giản trong hệ thống Windows, bao gồm các giá trị như được hiển thị bên dưới - Trong chương này, chúng ta hãy thảo luận về việc giải mã các tệp trong mật mã bằng Python. Lưu ý rằng đối với quá trình giải mã, chúng tôi sẽ làm theo quy trình tương tự, nhưng thay vì chỉ định đường dẫn đầu ra, chúng tôi sẽ tập trung vào đường dẫn đầu vào hoặc tệp cần thiết được mã hóa Mã sốSau đây là mã mẫu để giải mã các tệp trong mật mã bằng Python – list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']7 Bạn có thể sử dụng lệnh sau để thực thi đoạn mã trên - list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']8 đầu raBạn có thể quan sát đoạn mã sau khi thực hiện lệnh hiển thị ở trên - Lưu ý - Đầu ra chỉ định các giá trị băm trước khi mã hóa và sau khi giải mã, lưu ý rằng cùng một tệp được mã hóa và quá trình này đã thành công Mã hóa Base64 chuyển đổi dữ liệu nhị phân thành định dạng văn bản, được truyền qua kênh liên lạc nơi người dùng có thể xử lý văn bản một cách an toàn. Base64 còn được gọi là Thư điện tử nâng cao quyền riêng tư (PEM) và chủ yếu được sử dụng trong quy trình mã hóa email Python bao gồm một mô-đun có tên là BASE64 bao gồm hai chức năng chính như bên dưới -
Chương trình mã hóaBạn có thể sử dụng đoạn mã sau để thực hiện mã hóa base64 - list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']9 đầu raMã cho mã hóa base64 cung cấp cho bạn đầu ra sau - Chương trình giải mãBạn có thể sử dụng đoạn mã sau để thực hiện giải mã base64 - tinytuple = (123, 'john')0 đầu raMã giải mã base64 cung cấp cho bạn đầu ra sau - Sự khác biệt giữa ASCII và base64Bạn có thể quan sát những khác biệt sau khi làm việc trên ASCII và base64 để mã hóa dữ liệu -
Hạn chếThuật toán Base64 thường được sử dụng để lưu trữ mật khẩu trong cơ sở dữ liệu. Hạn chế chính là mỗi từ được giải mã có thể được mã hóa dễ dàng thông qua bất kỳ công cụ trực tuyến nào và những kẻ xâm nhập có thể dễ dàng lấy thông tin Trong chương này, chúng ta hãy hiểu quy trình XOR cùng với mã hóa của nó trong Python thuật toánThuật toán mã hóa và giải mã XOR chuyển đổi văn bản thuần túy ở định dạng byte ASCII và sử dụng thủ tục XOR để chuyển đổi nó thành một byte được chỉ định. Nó cung cấp những ưu điểm sau cho người dùng –
Mã sốBạn có thể sử dụng đoạn mã sau để thực hiện quy trình XOR - tinytuple = (123, 'john')1 đầu raMã cho quy trình XOR cung cấp cho bạn đầu ra sau - Giải trình
Lưu ý - Mã hóa XOR được sử dụng để mã hóa dữ liệu và khó bị bẻ khóa bằng phương pháp brute-force, nghĩa là bằng cách tạo các khóa mã hóa ngẫu nhiên để khớp với văn bản mật mã chính xác Trong khi sử dụng kỹ thuật mật mã Caesar, việc mã hóa và giải mã các ký hiệu liên quan đến việc chuyển đổi các giá trị thành số bằng một quy trình cộng hoặc trừ cơ bản đơn giản. Nếu phép nhân được sử dụng để chuyển đổi thành văn bản mật mã, nó được gọi là tình huống bao quanh. Xem xét các chữ cái và các số liên quan sẽ được sử dụng như hình dưới đây - Các số sẽ được sử dụng cho quy trình nhân và khóa liên quan là 7. Công thức cơ bản được sử dụng trong trường hợp như vậy để tạo mật mã nhân như sau - tinytuple = (123, 'john')2 Số được tìm nạp thông qua đầu ra được ánh xạ trong bảng được đề cập ở trên và chữ cái tương ứng được coi là chữ cái được mã hóa Hàm điều chế cơ bản của mật mã nhân trong Python như sau - tinytuple = (123, 'john')3 Lưu ý - Ưu điểm của mật mã nhân là nó có thể hoạt động với các khóa rất lớn như 8.953.851. Sẽ mất khá nhiều thời gian để một máy tính có thể brute-force thông qua phần lớn chín triệu khóa Mật mã Affine là sự kết hợp giữa Mật mã nhân và thuật toán Mật mã Caesar. Việc triển khai cơ bản của mật mã affine như trong hình dưới đây - Trong chương này, chúng ta sẽ thực hiện mật mã affine bằng cách tạo lớp tương ứng của nó bao gồm hai chức năng cơ bản để mã hóa và giải mã Mã sốBạn có thể sử dụng đoạn mã sau để triển khai mật mã affine - tinytuple = (123, 'john')4 đầu raBạn có thể quan sát đầu ra sau khi triển khai mật mã affine - Đầu ra hiển thị tin nhắn được mã hóa cho tin nhắn văn bản thuần túy Mật mã Affine và tin nhắn được giải mã cho tin nhắn được gửi dưới dạng đầu vào abcdefg Trong chương này, bạn sẽ tìm hiểu về mật mã đơn ký tự và cách hack nó bằng Python Mật mã đơn chữ cáiMột mật mã Monoalphabetic sử dụng một thay thế cố định để mã hóa toàn bộ tin nhắn. Một mật mã dùng một bảng chữ cái sử dụng từ điển Python với các đối tượng JSON được hiển thị ở đây - tinytuple = (123, 'john')5 Với sự trợ giúp của từ điển này, chúng ta có thể mã hóa các chữ cái bằng các chữ cái được liên kết thành các giá trị trong đối tượng JSON. Chương trình sau tạo một chương trình đơn chữ cái dưới dạng biểu diễn lớp bao gồm tất cả các chức năng mã hóa và giải mã tinytuple = (123, 'john')6 Tệp này được gọi sau để thực hiện quá trình mã hóa và giải mã của mật mã Monoalphabetic được đề cập như sau - tinytuple = (123, 'john')7 đầu raBạn có thể quan sát kết quả đầu ra sau đây khi triển khai mã ở trên - Do đó, bạn có thể hack một mật mã đơn bảng chữ cái với cặp giá trị khóa được chỉ định để bẻ khóa văn bản mật mã thành văn bản thuần túy thực tế Mật mã thay thế đơn giản là mật mã được sử dụng phổ biến nhất và bao gồm một thuật toán thay thế mọi ký tự văn bản thuần cho mọi ký tự văn bản mật mã. Trong quá trình này, các bảng chữ cái bị xáo trộn so với thuật toán mật mã Caesar Ví dụCác khóa cho mật mã thay thế đơn giản thường bao gồm 26 chữ cái. Một khóa ví dụ là - tinytuple = (123, 'john')8 Một mã hóa ví dụ sử dụng khóa trên là− tinytuple = (123, 'john')9 Đoạn mã sau trình bày một chương trình để thực hiện mật mã thay thế đơn giản - tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}0 đầu raBạn có thể quan sát kết quả đầu ra sau đây khi triển khai mã ở trên - Trong chương này, chúng ta sẽ tập trung vào kiểm tra mật mã thay thế bằng các phương pháp khác nhau, giúp tạo ra các chuỗi ngẫu nhiên như dưới đây - tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}1 đầu raBạn có thể quan sát đầu ra dưới dạng các chuỗi được tạo ngẫu nhiên giúp tạo các tin nhắn văn bản thuần túy ngẫu nhiên, như được hiển thị bên dưới - Sau khi kiểm tra hoàn tất thành công, chúng ta có thể quan sát thông báo đầu ra Kiểm tra thay thế đã thông qua Vì vậy, bạn có thể hack một mật mã thay thế một cách có hệ thống Trong chương này, bạn có thể tìm hiểu về cách triển khai đơn giản của mật mã thay thế hiển thị thông báo được mã hóa và giải mã theo logic được sử dụng trong kỹ thuật mật mã thay thế đơn giản. Đây có thể được coi là một cách tiếp cận thay thế của mã hóa Mã sốBạn có thể sử dụng đoạn mã sau để thực hiện giải mã bằng mật mã thay thế đơn giản - tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}2 đầu raĐoạn mã trên cung cấp cho bạn đầu ra như được hiển thị ở đây - Trong chương này, bạn sẽ tìm hiểu chi tiết về các mô-đun mật mã khác nhau trong Python Mô-đun mật mãNó bao gồm tất cả các công thức và nguyên hàm, đồng thời cung cấp giao diện mã hóa cấp cao trong Python. Bạn có thể cài đặt mô-đun mật mã bằng lệnh sau – pip install cryptography MãBạn có thể sử dụng đoạn mã sau để triển khai mô-đun mật mã - tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}4 đầu raMã được cung cấp ở trên tạo ra đầu ra sau - Mã được cung cấp ở đây được sử dụng để xác minh mật khẩu và tạo hàm băm của nó. Nó cũng bao gồm logic để xác minh mật khẩu cho mục đích xác thực tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}5 đầu raTình huống 1 – Nếu bạn đã nhập đúng mật khẩu, bạn có thể tìm thấy kết quả sau – Tình huống 2 - Nếu chúng tôi nhập sai mật khẩu, bạn có thể tìm thấy đầu ra sau - Giải trìnhGói Hashlib được sử dụng để lưu trữ mật khẩu trong cơ sở dữ liệu. Trong chương trình này, muối được sử dụng để thêm một chuỗi ngẫu nhiên vào chuỗi mật khẩu trước khi thực hiện hàm băm Mật mã Vigenere bao gồm một bước ngoặt với thuật toán Mật mã Caesar được sử dụng để mã hóa và giải mã. Mật mã Vigenere hoạt động tương tự như thuật toán Mật mã Caesar chỉ có một điểm khác biệt chính. Mật mã Caesar bao gồm thuật toán cho sự dịch chuyển một ký tự, trong khi Mật mã Vignere bao gồm khóa với sự dịch chuyển nhiều bảng chữ cái Phương trình toán họcĐối với mã hóa, phương trình toán học như sau - $$E_{k}\left ( M{_{i{}}} \right ) = \left ( M_{i}+K_{i} \right )\;\;\; Để giải mã, phương trình toán học như sau - $$D_{k}\left ( C{_{i{}}} \right ) = \left ( C_{i}-K_{i} \right )\;\;\; Mật mã Vigenere sử dụng nhiều hơn một bộ thay thế, và do đó nó còn được gọi là mật mã đa bảng chữ cái. Vigenere Cipher sẽ sử dụng khóa chữ cái thay vì biểu diễn khóa số. Chữ A sẽ được sử dụng cho phím 0, chữ B cho phím 1, v.v. Số của các chữ cái trước và sau quá trình mã hóa được hiển thị bên dưới - Sự kết hợp có thể có của số lượng khóa có thể dựa trên độ dài khóa Vignere được đưa ra như sau, cho kết quả về mức độ an toàn của Thuật toán mật mã Vignere − Hoạt cảnh VigenereHoạt cảnh được sử dụng cho mật mã Vignere như dưới đây - Trong chương này, chúng ta hãy hiểu làm thế nào để thực hiện mật mã Vigenere. Xem xét văn bản Đây là triển khai cơ bản của Mật mã Vignere được mã hóa và khóa được sử dụng là PIZZA Mã sốBạn có thể sử dụng đoạn mã sau để triển khai mật mã Vignere trong Python – tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}6 đầu raBạn có thể quan sát kết quả đầu ra sau đây khi triển khai mã ở trên - Các kết hợp khả thi của việc hack mật mã Vignere là không thể. Do đó, nó được coi là một chế độ mã hóa an toàn Mật mã bàn phím một lần là một loại mật mã Vignere bao gồm các tính năng sau -
Do đó, tin nhắn được mã hóa sẽ dễ bị tấn công đối với nhà phân tích mật mã. Khóa được sử dụng cho mật mã pad dùng một lần được gọi là pad, vì nó được in trên các miếng giấy Tại sao nó không thể phá vỡ?Chìa khóa không thể phá vỡ nhờ các tính năng sau –
mã hóaĐể mã hóa một chữ cái, người dùng cần viết một khóa bên dưới bản rõ. Chữ cái bản rõ được đặt ở trên cùng và chữ khóa ở bên trái. Mặt cắt đạt được giữa hai chữ cái là văn bản thuần túy. Nó được mô tả trong ví dụ dưới đây - giải mãĐể giải mã một chữ cái, người dùng lấy chữ cái khóa bên trái và tìm chữ cái bản mã trong hàng đó. Chữ thường được đặt ở đầu cột nơi người dùng có thể tìm thấy chữ mật mã Python bao gồm một mô-đun triển khai hacky để triển khai mật mã một lần. Tên gói được gọi là One-Time-Pad bao gồm một công cụ mã hóa dòng lệnh sử dụng cơ chế mã hóa tương tự như thuật toán mã hóa bảng một lần Cài đặtBạn có thể sử dụng lệnh sau để cài đặt mô-đun này - tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}7 Nếu bạn muốn sử dụng nó từ dòng lệnh, hãy chạy lệnh sau - ______3_______8MãĐoạn mã sau giúp tạo mật mã bảng một lần - tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}9 đầu raBạn có thể quan sát đầu ra sau khi chạy đoạn mã trên - Lưu ý - Tin nhắn được mã hóa rất dễ bị bẻ khóa nếu độ dài của khóa nhỏ hơn độ dài của tin nhắn (văn bản thuần túy) Trong mọi trường hợp, khóa không nhất thiết phải là ngẫu nhiên, điều này làm cho mật mã bàn phím một lần trở thành một công cụ đáng giá Trong chương này, chúng ta hãy thảo luận chi tiết về mật mã đối xứng và bất đối xứng Mật mã đối xứngTrong loại này, quá trình mã hóa và giải mã sử dụng cùng một khóa. Nó còn được gọi là mật mã khóa bí mật. Các tính năng chính của mật mã đối xứng như sau -
Hạn chếHạn chế chính của mật mã đối xứng là nếu khóa bị rò rỉ cho kẻ xâm nhập, thông điệp có thể dễ dàng thay đổi và đây được coi là một yếu tố rủi ro Tiêu chuẩn mã hóa dữ liệu (DES)Thuật toán khóa đối xứng phổ biến nhất là Tiêu chuẩn mã hóa dữ liệu (DES) và Python bao gồm một gói bao gồm logic đằng sau thuật toán DES Cài đặtLệnh cài đặt gói DES pyDES trong Python là - pip install cryptography0 Việc triển khai chương trình đơn giản của thuật toán DES như sau − pip install cryptography1 Nó yêu cầu biến padmode tìm nạp tất cả các gói theo triển khai thuật toán DES và tuân theo quá trình mã hóa và giải mã theo một cách được chỉ định đầu raBạn có thể thấy đầu ra sau đây là kết quả của đoạn mã được cung cấp ở trên - Mật mã bất đối xứngNó còn được gọi là mật mã khóa công khai. Nó hoạt động theo cách ngược lại của mật mã đối xứng. Điều này ngụ ý rằng nó yêu cầu hai khóa. một để mã hóa và một để giải mã. Khóa công khai được sử dụng để mã hóa và khóa riêng được sử dụng để giải mã Hạn chế
Mã chương trình sau bằng Python minh họa hoạt động của mật mã bất đối xứng bằng thuật toán RSA và cách triển khai thuật toán này – pip install cryptography2 đầu raBạn có thể tìm thấy đầu ra sau khi thực thi mã được cung cấp ở trên - Thuật toán RSA là một kỹ thuật mã hóa khóa công khai và được coi là cách mã hóa an toàn nhất. Nó được phát minh bởi Rivest, Shamir và Adleman vào năm 1978 và do đó đặt tên là thuật toán RSA thuật toánThuật toán RSA giữ các tính năng sau -
Bạn sẽ phải thực hiện các bước sau để làm việc với thuật toán RSA – Bước 1. Tạo mô-đun RSAQuy trình ban đầu bắt đầu bằng việc chọn hai số nguyên tố là p và q, sau đó tính tích N của chúng, như được hiển thị - pip install cryptography3 Ở đây, đặt N là số lớn được chỉ định Bước 2. Số dẫn xuất (e)Coi số e là số dẫn xuất phải lớn hơn 1 và nhỏ hơn (p-1) và (q-1). Điều kiện chính sẽ là không có ước chung của (p-1) và (q-1) ngoại trừ 1 Bước 3. Khóa công khaiCặp số n và e được chỉ định tạo thành khóa công khai RSA và nó được công khai Bước 4. Khóa riêngKhóa riêng d được tính từ các số p, q và e. Mối quan hệ toán học giữa các số như sau - pip install cryptography4 Công thức trên là công thức cơ bản cho Thuật toán Euclide mở rộng, lấy p và q làm tham số đầu vào Công thức mã hóaHãy xem xét một người gửi gửi tin nhắn văn bản thuần túy cho ai đó có khóa công khai là (n,e). Để mã hóa tin nhắn văn bản thuần túy trong tình huống đã cho, hãy sử dụng cú pháp sau - pip install cryptography5 Công thức giải mãQuá trình giải mã rất đơn giản và bao gồm các phân tích để tính toán theo cách tiếp cận có hệ thống. Xem xét người nhận C có khóa riêng d, mô-đun kết quả sẽ được tính là - pip install cryptography6 Trong chương này, chúng ta sẽ tập trung vào từng bước triển khai thuật toán RSA bằng Python Tạo khóa RSACác bước sau đây liên quan đến việc tạo khóa RSA -
Các thuật toán tạo khóa RSAChúng tôi cần hai thuật toán chính để tạo khóa RSA bằng mô-đun Python − Cryptomath và mô-đun Rabin Miller Mô-đun mật mãMã nguồn của mô-đun mật mã tuân theo tất cả triển khai cơ bản của thuật toán RSA như sau: pip install cryptography7 Mô-đun RabinMillerMã nguồn của mô-đun RabinMiller tuân theo tất cả triển khai cơ bản của thuật toán RSA như sau: pip install cryptography8 Mã hoàn chỉnh để tạo khóa RSA như sau - pip install cryptography9 đầu raKhóa chung và khóa riêng được tạo và lưu trong các tệp tương ứng như được hiển thị trong đầu ra sau Trong chương này, chúng ta sẽ tập trung vào việc triển khai mã hóa mật mã RSA khác nhau và các chức năng liên quan cho cùng một mã hóa. Bạn có thể tham khảo hoặc đưa vào file python này để thực hiện triển khai thuật toán mật mã RSA Các mô-đun được bao gồm cho thuật toán mã hóa như sau - message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)0 Chúng tôi đã khởi tạo giá trị băm là SHA-256 nhằm mục đích bảo mật tốt hơn. Chúng tôi sẽ sử dụng một chức năng để tạo khóa mới hoặc một cặp khóa chung và khóa riêng bằng mã sau message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)1 Để mã hóa, hàm sau được sử dụng tuân theo thuật toán RSA - message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)2 Hai tham số là bắt buộc. tin nhắn và pub_key đề cập đến khóa Công khai. Khóa công khai được sử dụng để mã hóa và khóa riêng được sử dụng để giải mã Chương trình hoàn chỉnh cho quy trình mã hóa được đề cập bên dưới - message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)3 Chương này là phần tiếp theo của chương trước, nơi chúng ta đã theo dõi từng bước triển khai mã hóa khôn ngoan bằng thuật toán RSA và thảo luận chi tiết về nó Hàm được sử dụng để giải mã văn bản mật mã như sau - message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)4 Đối với mật mã khóa công khai hoặc mật mã khóa bất đối xứng, điều quan trọng là phải duy trì hai tính năng quan trọng là Xác thực và Ủy quyền ủy quyềnỦy quyền là quá trình xác nhận rằng người gửi là người duy nhất đã truyền thông điệp. Đoạn mã sau giải thích điều này - message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)5 xác thựcCó thể xác thực bằng phương pháp xác minh được giải thích như bên dưới - message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)6 Chữ ký điện tử được xác minh cùng với các chi tiết của người gửi và người nhận. Điều này bổ sung thêm tuổi cân nặng cho mục đích bảo mật Giải mã mật mã RSABạn có thể sử dụng đoạn mã sau để giải mã mật mã RSA − message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)7 Có thể hack mật mã RSA với các số nguyên tố nhỏ, nhưng được coi là không thể nếu nó được sử dụng với các số lớn. Những lý do chỉ rõ lý do tại sao rất khó để hack mật mã RSA như sau –
Phương trình giải mã RSA là - message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print(“The cipher text is : “, translated)8 Với sự trợ giúp của các số nguyên tố nhỏ, chúng ta có thể thử hack mật mã RSA và mã mẫu cho điều tương tự được đề cập bên dưới - Làm cách nào để mã hóa mật khẩu trong Python?Trong Python với sự trợ giúp của mô-đun maskpass() và mô-đun base64(), chúng ta có thể ẩn mật khẩu của người dùng bằng dấu hoa thị (*) trong thời gian nhập và sau đó với sự trợ giúp của . it can be encrypted.
Làm cách nào để sử dụng RSA trong Python?Triển khai thuật toán RSA trong Python . def tạoKeys(). (Khóa công khai, Khóa riêng) = rsa. . def loadKeys(). với open('keys/publicKey. pem', 'rb') dưới dạng p. khóa công khai = rsa. . mã hóa def (tin nhắn, khóa). trả lại rsa. . giải mã def (bản mã, khóa). thử. trả lại rsa. . dấu hiệu def (tin nhắn, khóa). trả lại rsa Thuật toán cơ bản nào được sử dụng trong Python để mã hóa?Triển khai RSA với python
. Dữ liệu được mã hóa bằng khóa chung và được giải mã bằng khóa riêng. RSA algorithm is used to perform encryption and decryption. The data is encrypted using the public key and decrypted using the private.
Làm thế nào để giải mã fernet?Cách mã hóa và giải mã dữ liệu trong Python . từ mật mã. dương xỉ nhập khẩu dương xỉ phím = Fernet. generate_key() f = Fernet(key) in (encrypted_data) in (decrypted_data. giải mã()) từ mật mã. nhập khẩu fernet Khóa Fernet = Fernet. generate_key() print("Khóa. ", chìa khóa. giải mã ()) f = Fernet (khóa) mã hóa_data = f |