Ⅰ hill密码的译码矩阵求法
大概是用一个矩阵作为加密矩阵用其逆阵作为解码矩阵。这个矩阵及其逆阵元素都是整数
Ⅱ 希尔密码的Hill cipher
三、Hill cipher(希尔密码)
Hill cipher是1929年提出的一种密码体制。
设d是一正整数,定义。Hill cipher的主要思想是利用线性变换方法,不同的是这种变换是在 上运算。
例如:设d=2,每个明文单元使用 来表示,同样密文单元用 表示,具体的加密中, 将被表示为 的线性组合。
如:
利用线性代数的知识,可得
这个运算在 上进行,即mod26,密钥K一般取一个m*m的矩阵,记为。对明文 ,以 ,则加密算法为:
也可表示成。
Ⅲ matlab实现hill加密
function [T, P_T, train_acc, test_acc, pruned_train_acc,pruned_test_acc, train_set] = id3(data_file,...
train_size, test_size, prune_size, r_seed, depth)
%add testing/training/pruning accor.
tree = [];
if (nargin < 6)
depth = 7;
end
if (nargin < 5)
r_seed = 999;
end
if (nargin < 2)
train_size = 100;
end
if (nargin < 3)
test_size = 0;
end
if (nargin < 4)
prune_size = 0;
end
global max_depth;
max_depth = depth;
%initialize random number generator
rand('seed',r_seed);
load(data_file);
l = length(data_file);
l = l-4;
stripped_file = data_file(1:l);
data = eval(stripped_file);
[n_examples,features] = size(data);
%scramble data
rando = rand(1,n_examples);
[q,dex] = sort(rando);
for i = 1:n_examples
new_data(i,:) = data(dex(i),:);
end
data = new_data;
n_training = ceil(n_examples * (train_size / 100));
train_set = data(1:n_training,:);
n_test = ceil(n_examples * (test_size / 100));
if (n_test > 0);
test_set = data(n_training+1:n_training+n_test,:);
end ;
n_prune = ceil(n_examples * (train_size / 100));
if (n_prune > 0)
prune_set = data(n_training+n_test+1:n_examples,:);
end
[T] = build_tree(train_set,0);
train_acc = trace_err(T,train_set);
train_acc = train_acc(:,2) / sum(train_acc(1,2:3));
if not(isempty(test_set))
test_acc = trace_err(T,test_set);
test_acc = test_acc(:,2) / sum(test_acc(1,2:3));
else
test_acc = [];
end
if not(isempty(prune_set))
P_T = prune_tree(T,prune_set);
pruned_train_acc = trace_err(P_T,train_set);
pruned_train_acc = pruned_train_acc(:,2) / sum(pruned_train_acc(1,2:3));
pruned_test_acc = trace_err(P_T,test_set);
pruned_test_acc = pruned_test_acc(:,2) / sum(pruned_test_acc(1,2:3));
else
P_T = T;
prune_acc = [];
end
Ⅳ 试证先做m个字母的Hill加密,再做n个字母的Hill加密 ,结果长度我m.n的最小公倍数Hill加密变换
人在划船的话,我就把头发变成钩子,钩住小船,然后把
小船拉到安全地带.这样,就不会有人员伤亡了.
我还要用超能力穿越时空隧道,回到古代看看古代人的饮食起居是什么样子的,我要看一看恐龙到底是怎样灭绝的,免得科学家为了这一问题而互相赌气.更值得关注的是,变成超人的我还要瞧瞧,人类没诞生之前,有哪些动、植物生长在地球上.我还想化身去拜访孔子,遨游太空,还想到花果山去会会美猴王—孙悟空,我还要到天庭,去尝尝太上老君炼出来的仙丹.
当然,变成超人的我不会忘记学习,我要用超人牌超级记忆力,让自己的成绩更上一层楼.
超人,爱打抱不平,爱拔刀相助,能上知天文,下知地理,能遨游太空,能访问名人,能
Ⅳ hill密码的加密解密算法怎么实现
delphi的貌似太简单了吧。。。
Ⅵ 试证先做m个字母的Hill加密,再做n个字母的Hill加密 ,结果长度为m.n的最小公倍数Hill加密变换
你好,很高兴为你解答,根据你的描述 有一以下方案
#include<stdio.h>
int main()
{
int m,n,temp,p,r;
scanf("%d%d",&m,&n);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("最小公倍数为:%d\n",p/n);
printf("最大公约数为:%d\n",n);
return 0;
}
不懂追问,望采纳,你的采纳是我答题的动力
Ⅶ 【Hill密码加密解密问题】 给定一个长度为n的明文,请问密钥矩阵的维数具体要怎么取
不一定
你可以取一个3维的可逆矩阵
但注意矩阵的行列式的值最好是1
这样可以保证逆矩阵不出现分数
Ⅷ md5加密和解密 Hill2密码加密解密
md5是加密算法,hill2不知道是什么东西,不同加密算法的选择,就看需要加密的强度,同时也兼顾加解密的效率。
Ⅸ c语言编写hill密码
花了些时间写的,希望对你有帮助~
#include<stdio.h>
#define N 3 //可加密的字符串长度
char plaintext[N]=; //明文,输入时输入字符,参与运算时强制转换成整数
int ciphertext[N]=; //密文,保存成整数,输出时强制转换成字符
int key[N][N]; //密钥矩阵
void getPlainText() //获得明文字符串
{
printf("请输入明文:");
scanf("%s",plaintext);
printf("\n");
}
void getKey() //输入密钥矩阵
{
int i,j;
printf("请输入加密矩阵:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&key[i][j]);
printf("\n");
}
void hill() //Hill加密算法
{
int i,j;
for(i=0;i<N;i++){ //矩阵的乘法
for(j=0;j<N;j++){ //计算转换依据,0~25对应a~z
ciphertext[i]+=key[i][j]*(int)(plaintext[j]-'a');
ciphertext[i]%=26;
}
}
printf("\n");
}
void printCipherText() //输出加密后的密文
{
int i;
printf("加密后的密文是:");
for(i=0;i<N;i++) //把参与计算后是整数强制转换成对应的字符
printf("%c",(char)(ciphertext[i]+'a'));
printf("\n");
}
void main()
{
getPlainText(); //明文
getKey(); //密钥
hill(); //加密
printCipherText(); //密文
}
Ⅹ m=2的Hill密码求加密解密矩阵求计算过程
去看看矩阵的乘法运算,就清楚了。很简单的乘法运算