[Chơi nhạc] ZAMYLA CHAN: Chúng ta hãy thực hiện Vigenere, một nhẹ hơn đảm bảo yếu hơn Caesar. Các văn bản đơn giản được sử dụng enciphered một chuỗi thay vì một số nguyên. Mỗi chữ cái trong đồng bằng văn bản được chuyển bởi một thư trong các từ khóa. Trong ví dụ này, các từ khóa ohai, O tương ứng với một sự thay đổi của 14; H để một chuyển của 7; A, sự thay đổi của 0, và tôi một sự thay đổi của 8. Nếu bạn đã thực hiện thành công của bạn Caesar thuật toán mã hóa, nó sẽ có một tốt đẹp khuôn khổ mà từ đó bạn có thể thực hiện Vigenere. Như bạn thấy, chạy một Vigenere thuật toán mã hóa với một nhân vật duy nhất là một từ khóa là điều tương tự như một mật mã Caesar. Các bước tương tự áp dụng cho Vigenere như họ đã làm trong Caesar. Từ khóa là dòng lệnh thứ hai lập luận, vì vậy bạn truy cập nó với argv1. Sau đó, bạn cần phải xác minh rằng chìa khóa từ thực sự là tất cả các chữ cái. Đây là nơi mà là alpha có thể có ích. Nếu bạn có một từ khóa hợp lệ, bạn sẽ có được sức mạnh từ người sử dụng, và sau đó bạn đã sẵn sàng encipher. Công thức mật mã Vigenere là tương tự cho Caesar công thức, ngoại trừ bây giờ k trở nên k Subscript j, cho thấy các thư j thứ của từ khóa. Chúng ta hãy bước qua quá trình này. Giả sử bạn muốn gửi tin nhắn đến bạn vụ tai nạn, tôi thích bạn, nhưng bạn không muốn mọi người biết. Vì vậy, bạn sử dụng một mật mã Vigenere với từ khóa gấu trúc, bởi vì, tốt, bạn cũng có giống như gấu trúc. Các chữ cái đầu tiên, tôi, sẽ được chuyển p, cho x, 15 chữ cái sau tôi, vì 15 p là 16 thư của bảng chữ cái. Bức thư tiếp theo trong văn bản đơn giản là một không gian, do đó sẽ không được thay đổi. Và chỉ số của các từ khóa sẽ không thay đổi. Sau đó các thư tiếp theo trong văn bản đơn giản là l, chuyển bởi một, mà không thay đổi các thư văn bản đơn giản chút nào, bởi vì một là thư 0 của bảng chữ cái. Quá trình này tiếp tục, thúc đẩy nhân vật từ khóa mỗi khi có một thư trong văn bản gốc. Sau khi lá thư cuối cùng trong các từ khóa là đạt, từ khóa kết thúc tốt đẹp xung quanh và ca đồng bằng tiếp theo thư văn bản bằng p. X lvne noh. Làm thế nào lãng mạn. Vì vậy, cho một nhân vật, làm thế nào để bạn chuyển đổi đó vào tương ứng mật mã thay đổi? Hãy thử so sánh ASCII giá trị cho sự thay đổi. Có lẽ bạn có thể tìm thấy một mối quan hệ giữa các chữ cái và họ chữ cái chỉ số sử dụng toán học ASCII. Bạn có thể thêm hoặc trừ đi một nhân vật từ khác để có được bạn kết quả mong muốn? Hãy nhớ rằng những thay đổi cho hoa và chữ thường đều giống nhau. Vì vậy, có lẽ bạn sẽ cần phải xác định hai công thức tương tự để đại diện cho sự thay đổi, một cho một chữ hoa nhân vật từ khóa, và một cho một chữ thường. Tiếp theo, hãy nhớ rằng những tiến bộ từ khóa chỉ khi các nhân vật trong văn bản đơn giản là một bức thư và trường hợp của đồng bằng văn bản phải được bảo quản. Vì vậy, nếu chúng ta nhìn vào công thức cho các Vigenere thay đổi, có hai chỉ số biến, i, k. Một theo dõi vị trí trong đồng bằng văn bản, và một vị trí trong các từ khóa. Nhưng đồng bằng văn bản của bạn có thể dài hơn nhiều hơn từ khóa của bạn, trong trường hợp của bạn chỉ số từ khóa cần để bọc xung quanh trở lại đến đầu của từ khóa. Làm thế nào để bạn làm điều này? Chúng ta hãy nhìn lại modulo nhà điều hành. Modulo được định nghĩa là phần còn lại phân chia hai con số. Nhưng những gì là một thực tế thực tế sử dụng modulo? Vâng, nói rằng bạn có một nhóm lớn các người, và bạn cần phải phân chia thành ba nhóm. Một cách để phân chia mọi người thành các nhóm là có họ tính ra. Bạn số nhóm nhóm số 1, 2, và 3. Người đầu tiên sẽ nói 1, 2 tiếp theo, tiếp theo 3. Người sau đó sẽ nói 1, bởi vì không có một nhóm 4, và số bắt đầu hơn từ đó. Bạn có thể sử dụng để theo modulo làm điều tương tự. Thời gian này, nhóm sẽ được nhóm 0, 1, và 2. Người đầu tiên, số 1 modulo 3, 1. Người 2 modulo 3 là 2. Người 3 modulo 3 là 0. Người 4 modulo 3 cho 1, và do đó các nhóm có thể bao bọc xung quanh. Vì vậy, nếu bạn có một chỉ số và modulo chỉ số của một kích thước tối đa, kết quả sẽ không bao giờ lớn hơn hoặc tương đương với kích thước, có nghĩa là bạn có thể làm tăng các chỉ số như nhiều như bạn muốn. Và miễn là bạn Modulo chỉ số của một số số, bạn sẽ không nhận được một số lớn hơn. Vì vậy, chúng tôi có 10 người thay vì 5, và tất cả họ sẽ được giao cho các nhóm số 0, 1, hoặc 2. Hãy thử áp dụng điều này để gói trong từ khóa, ngoại trừ thay vì phân loại người vào số nhóm bạn muốn chỉ số của các từ khóa để bạn có thể được những nhân vật thích hợp cho các chuyển đổi không vượt quá chiều dài của chuỗi. Cùng với đó, bạn có của bạn Vigenere mật mã. Tên tôi là Zamyla, và đây là CS50.