Ⅰ 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密碼求加密解密矩陣求計算過程
去看看矩陣的乘法運算,就清楚了。很簡單的乘法運算