Hill2 加密解密 Matlab 函数实现
function [cipherText, plainText] = hill2Encryption(plainText, keyMatrix1, keyMatrix2) % 检查明文长度是否为偶数 if mod(length(plainText), 2) ~= 0 plainText = [plainText, 'x']; % 如果长度为奇数,则附加 'x' end
% 将字母转换为数字
plainTextNum = double(plainText) - 96;
% 将 plainTextNum 重塑为一个 2 列矩阵
plainTextNum = reshape(plainTextNum, 2, []).';
% 对每对数字进行加密
cipherTextNum = mod(plainTextNum * keyMatrix1, 26);
cipherTextNum = mod(cipherTextNum * keyMatrix2, 26);
% 将数字转换回字母
cipherText = char(cipherTextNum + 96);
% 将 keyMatrix1 和 keyMatrix2 转换为模逆
keyMatrix1Inv = mod(inv(keyMatrix1) * det(keyMatrix1) * det(mod(keyMatrix1, 26))^-1, 26);
keyMatrix2Inv = mod(inv(keyMatrix2) * det(keyMatrix2) * det(mod(keyMatrix2, 26))^-1, 26);
% 对每对数字进行解密
plainTextNum = mod(cipherTextNum * keyMatrix2Inv, 26);
plainTextNum = mod(plainTextNum * keyMatrix1Inv, 26);
% 将数字转换回字母
plainText = char(plainTextNum + 96);
end
原文地址: https://www.cveoy.top/t/topic/zV1 著作权归作者所有。请勿转载和采集!