当前位置:首页 » 密码管理 » 行列式加密

行列式加密

发布时间: 2022-06-07 20:25:01

❶ 问一下这是什么代码 . .--. --- .----. ..- / -..- -... --- .

摩斯电码,就是早期电报之类用的发送方式,你这个怕是输入有错,翻译出来是
EPO'U XBOU UP MFU IFS LOPX IPX NVDI ZPV EJE GPS IFS, CVU XBOU UP MFU IFS LOPX ZPV DBSF BCPVU IFS.
至少我是看不懂是什么语言

❷ 有多少种密码方式除了摩斯密码外还有什么密码

1、RSA算法密码

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

2、ECC加密法密码

ECC算法也是一个能同时用于加密和数字签名的算法,也易于理解和操作。同RSA算法是一样是非对称密码算法使用其中一个加密,用另一个才能解密。

3、三分密码

首先随意制造一个3个3×3的Polybius方格替代密码,包括26个英文字母和一个符号。然后写出要加密的讯息的三维坐标。讯息和坐标四个一列排起,再顺序取横行的数字,三个一组分开,将这三个数字当成坐标,找出对应的字母,便得到密文。

4、栅栏加密法密码

栅栏加密法是一种比较简单快捷的加密方法。栅栏加密法就是把要被加密的文件按照一上一下的写法写出来,再把第二行的文字排列到第一行的后面。

5、针孔加密法密码

这种加密法诞生于近代。由于当时邮费很贵,但是寄送报纸则花费很少。于是人们便在报纸上用针在需要的字下面刺一个孔,等到寄到收信人手里,收信人再把刺有孔的文字依次排列,连成文章。

❸ 替换式密码的表格式替换加密

在表格式替换密码中,明文不再单独替换某个字母,而是一次过替换较大的字母单元(通常为一对字母)。第一个优点是频率分布比单个字母时更平坦(虽然实际上并不平坦,因为在日常语言中,“TH”就远远比“XQ”常见)。其次,其产生的大量的符号,相应地需要更多的密文来进行高效的字母频率分析。
为了替换每“对”字母,将需要共676个符号(26^2 = 676 )。在之前说过的《书写中的隐蔽字符》一书中,德拉波尔塔提出了这样一个系统:用一个20 x 20的表格(意大利或拉丁文字中的20个字母。),其中填上400个特别的字形。然而,该系统实为不切实际,更有可能从来没有实际使用过。
最早的实用表格式替换密码是查尔斯·惠斯登(英语:CharlesWheatstone)爵士于1854年所创的波雷费密码。在此密码中,5×5的方格中填满了混合字母(两个字母,通常I和J并排,即I等于J)。明文中每两个字母为一单元,通常这个单元会在表上组成一个四方形(单元内容占其中两个角),然后取另外两角为密文。当单元内容在同一列或同一行时(即无法组成四方形),同列者密文为明文往右偏移一格;同行者密文为明文往下偏移一格。单元中两者为同字母者于该单之前添加X(或Q)(即其后全体往后偏移一格)。波雷费密码于第二次波耳战争开始直到第二次世界大战为止一直用于军事用途。
在1901年,费利克斯·第利斯塔(英语:Felix_Delastelle)推出了其他一些实际可用的表格式替换加密,包括二分密码(英语:Bifid_cipher)、四方密码及三分密码。
莱斯特·S·希尔(英语:Lester S. Hill)于1929年发明了希尔密码,它是一种表格式替换加密。希尔密码可以使用线性代数来结合拥有非常多字母的单元。每个字母被视为二十六进制的数字:A = 0,B = 1,依此类推。(在某些变种中,会添加3个额外符号,将基底变成一个质数。)一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果同余26。注意用作加密的矩阵(即密匙),否则就不可能解码。只有矩阵的行列式和26互质,才是可逆的。
因为希尔密码完全建基于线性关系上,它会很容易受到己知明文攻击(英语:Known-plaintext attack),因此,有时它会结合一些非线性步骤来减少被击破的机会。

❹ 在c#中如何用矩阵在加密解密中

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

//矩阵数据结构
//二维矩阵
class _Matrix
{
public int m;
public int n;
public float[] arr;

//初始化
public _Matrix()
{
m = 0;
n = 0;
}

public _Matrix(int mm,int nn)
{
m = mm;
n = nn;
}

//设置m
public void set_mn(int mm,int nn)
{
m = mm;
n = nn;
}

//设置m
public void set_m(int mm)
{
m = mm;
}

//设置n
public void set_n(int nn)
{
n = nn;
}

//初始化
public void init_matrix()
{
arr = new float[m * n];
}

//释放
public void free_matrix()
{
//delete [] arr;
}

//读取i,j坐标的数据
//失败返回-31415,成功返回值
public float read(int i,int j)
{
if (i >= m || j >= n)
{
return -31415;
}

//return *(arr + i * n + j);
return arr[i * n + j];
}

//写入i,j坐标的数据
//失败返回-1,成功返回1
public int write(int i,int j,float val)
{
if (i >= m || j >= n)
{
return -1;
}

arr[i * n + j] = val;
return 1;
}
};

//二维运算类
class _Matrix_Calc
{
//初始化
public _Matrix_Calc()
{

}

//C = A + B
//成功返回1,失败返回-1
public int add(ref _Matrix A,ref _Matrix B,ref _Matrix C)
{
int i = 0;
int j = 0;

//判断是否可以运算
if (A.m != B.m || A.n != B.n ||
A.m != C.m || A.n != C.n)
{
return -1;
}
//运算
for (i = 0;i < C.m;i++)
{
for (j = 0;j < C.n;j++)
{
C.write(i,j,A.read(i,j) + B.read(i,j));
}
}

return 1;
}

//C = A - B
//成功返回1,失败返回-1
public int subtract(ref _Matrix A,ref _Matrix B, ref _Matrix C)
{
int i = 0;
int j = 0;

//判断是否可以运算
if (A.m != B.m || A.n != B.n ||
A.m != C.m || A.n != C.n)
{
return -1;
}
//运算
for (i = 0;i < C.m;i++)
{
for (j = 0;j < C.n;j++)
{
C.write(i,j,A.read(i,j) - B.read(i,j));
}
}

return 1;
}

//C = A * B
//成功返回1,失败返回-1
public int multiply(ref _Matrix A, ref _Matrix B, ref _Matrix C)
{
int i = 0;
int j = 0;
int k = 0;
float temp = 0;

//判断是否可以运算
if (A.m != C.m || B.n != C.n ||
A.n != B.m)
{
return -1;
}
//运算
for (i = 0;i < C.m;i++)
{
for (j = 0;j < C.n;j++)
{
temp = 0;
for (k = 0;k < A.n;k++)
{
temp += A.read(i,k) * B.read(k,j);
}
C.write(i,j,temp);
}
}

return 1;
}

//行列式的值,只能计算2 * 2,3 * 3
//失败返回-31415,成功返回值
public float det(ref _Matrix A)
{
float value = 0;

//判断是否可以运算
if (A.m != A.n || (A.m != 2 && A.m != 3))
{
return -31415;
}
//运算
if (A.m == 2)
{
value = A.read(0,0) * A.read(1,1) - A.read(0,1) * A.read(1,0);
}
else
{
value = A.read(0,0) * A.read(1,1) * A.read(2,2) +
A.read(0,1) * A.read(1,2) * A.read(2,0) +
A.read(0,2) * A.read(1,0) * A.read(2,1) -
A.read(0,0) * A.read(1,2) * A.read(2,1) -
A.read(0,1) * A.read(1,0) * A.read(2,2) -
A.read(0,2) * A.read(1,1) * A.read(2,0);
}

return value;
}

//求转置矩阵,B = AT
//成功返回1,失败返回-1
public int transpos(ref _Matrix A,ref _Matrix B)
{
int i = 0;
int j = 0;

//判断是否可以运算
if (A.m != B.n || A.n != B.m)
{
return -1;
}
//运算
for (i = 0;i < B.m;i++)
{
for (j = 0;j < B.n;j++)
{
B.write(i,j,A.read(j,i));
}
}

return 1;
}

//求逆矩阵,B = A^(-1)
//成功返回1,失败返回-1
public int inverse(ref _Matrix A, ref _Matrix B)
{
int i = 0;
int j = 0;
int k = 0;
_Matrix m = new _Matrix(A.m,2 * A.m);
float temp = 0;
float b = 0;

//判断是否可以运算
if (A.m != A.n || B.m != B.n || A.m != B.m)
{
return -1;
}

/*
//如果是2维或者3维求行列式判断是否可逆
if (A.m == 2 || A.m == 3)
{
if (det(A) == 0)
{
return -1;
}
}
*/

//增广矩阵m = A | B初始化
m.init_matrix();
for (i = 0;i < m.m;i++)
{
for (j = 0;j < m.n;j++)
{
if (j <= A.n - 1)
{
m.write(i,j,A.read(i,j));
}
else
{
if (i == j - A.n)
{
m.write(i,j,1);
}
else
{
m.write(i,j,0);
}
}
}
}

//高斯消元
//变换下三角
for (k = 0;k < m.m - 1;k++)
{
//如果坐标为k,k的数为0,则行变换
if (m.read(k,k) == 0)
{
for (i = k + 1;i < m.m;i++)
{
if (m.read(i,k) != 0)
{
break;
}
}
if (i >= m.m)
{
return -1;
}
else
{
//交换行
for (j = 0;j < m.n;j++)
{
temp = m.read(k,j);
m.write(k,j,m.read(k + 1,j));
m.write(k + 1,j,temp);
}
}
}

//消元
for (i = k + 1;i < m.m;i++)
{
//获得倍数
b = m.read(i,k) / m.read(k,k);
//行变换
for (j = 0;j < m.n;j++)
{
temp = m.read(i,j) - b * m.read(k,j);
m.write(i,j,temp);
}
}
}
//变换上三角
for (k = m.m - 1;k > 0;k--)
{
//如果坐标为k,k的数为0,则行变换
if (m.read(k,k) == 0)
{
for (i = k + 1;i < m.m;i++)
{
if (m.read(i,k) != 0)
{
break;
}
}

❺ 希尔密码原理

希尔密码(Hill Cipher)是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26。

中文名
希尔密码
外文名
Hill Cipher
原理
基本矩阵论
类别
替换密码
提出者
Lester S. Hill
快速
导航
产生原因

原理

安全性分析

例子
简介
希尔密码是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。
每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果模26。
注意用作加密的矩阵(即密匙)在必须是可逆的,否则就不可能解码。只有矩阵的行列式和26互质,才是可逆的。
产生原因
随着科技的日新月异和人们对信用卡、计算机的依赖性的加强,密码学显得愈来愈重要。密码学是一门关于加密和解密、密文和明文的学科。若将原本的符号代换成另一种符号,即可称之为广义的密码。狭义的密码主要是为了保密,是一种防止窃文者得知内容而设的另一种符号文字,也是一般人所熟知的密码。
使用信用卡、网络账号及密码、电子信箱、电子签名等都需要密码。为了方便记忆,许多人用生日、电话号码、门牌号码记做密码,但是这样安全性较差。
为了使密码更加复杂,更难解密,产生了许多不同形式的密码。密码的函数特性是明文对密码为一对一或一对多的关系,即明文是密码的函数。传统密码中有一种叫移位法,移位法基本型态是加法加密系统C=P+s(mod m)。一般来说,我们以1表示A,2表示B,……,25表示Y,26表示Z,以此类推。由于s=0时相当于未加密,而0≤s≤m-1(s≥m都可用0≤s≤m-1取代),因此,整个系统只有m-1种变化。换言之,只要试过m-1次,机密的信息就会泄漏出去。
由此看来,日常生活中的密码和传统的密码的可靠性较差,我们有必要寻求一种容易将字母的自然频度隐蔽或均匀化,从而有利于统计分析的安全可靠的加密方法。希尔密码能基本满足这一要求。
原理
希尔加密算法的基本思想是,将d个明文字母通过线性变换将它们转换为d个密文字母。解密只要作一次逆变换就可以了,密钥就是变换矩阵本身。[1]
希尔密码是多字母代换密码的一种。多字母代换密码可以利用矩阵变换方便地描述,有时又称为矩阵变换密码。令明文字母表为Z,若采用L个字母为单位进行代换,则多码代换是映射f:Z→Z。若映射是线性的,则f是线性变换,可以用Z上的L×L矩阵K表示。若是满秩的,则变换为一一映射,且存在有逆变换K。将L个字母的数字表示为Z上的L维矢量m,相应的密文矢量c,且mK=c,以K作为解密矩阵,可由c恢复出相应的明文c·K=m。
在军事通讯中,常将字符(信息)与数字对应(为方便起见,我们将字符和数字按原有的顺序对应,事实上这种对应规则是极易被破解的):
abcde…x y z
12345…242526
如信息“NOSLEEPPING”对应着一组编码14,15,19,12,5,5,16,16,9,14,7。但如果按这种方式直接传输出去,则很容易被敌方破译。于是必须采取加密措施,即用一个约定的加密矩阵K乘以原信号B,传输信号为C=KB(加密),收到信号的一方再将信号还原(破译)为B=KC。

❻ 【Hill密码加密解密问题】 给定一个长度为n的明文,请问密钥矩阵的维数具体要怎么取

不一定
你可以取一个3维的可逆矩阵
但注意矩阵的行列式的值最好是1
这样可以保证逆矩阵不出现分数

❼ 在加密算法中属于公钥密码体制的是什么

算法介绍:
现有矩阵M,N和P,P=M*N。如果M(或N)的行列式为零,则由P和M(或P和N)计算N(或M)是一个多值问题,特别是M(或N)的秩越小,N(或M)的解越多。
由以上问题,假设Tom和Bob相互通信,现做如下约定:
1. 在正式通信之前,二人约定一个随机奇异矩阵M。
2. Tom和Bob各自选取一个n*n的随机矩阵作为他们的私有密钥,设Tom的为A,Bob的为B。
3. 然后Tom计算矩阵Pa=A*M作为他的公钥,Bob计算矩阵Pb=M*B作为他的公钥。
4. 当Tom向Bob发送消息时,计算加密矩阵K=A*Pb,用K对消息加密后发送到Bob端,Bob收到消息后,计算解密矩阵K’= Pa*B,由以上代数关系可以看出,K= K’,也既加密和解密是逆过程,可以参照对称加密标准AES。
5. Bob向Tom发送消息时,计算解密矩阵K= Pa*B,加密。Tom收到消息后计算解密矩阵K=A*Pb,原理同上。
算法分析:
由以上介绍可容易看出,此算法比RSA和ECC的加密效率要高4-6个数量级,且加密强度在增大n的基础上,可获得与以上两算法相当的加密强度。
该算法仍在论证阶段,欢迎此方面高手携手参与或提出缺点.
email:[email protected]

❽ 行列式在生活中的应用

1、DNA序列对比

在生物信息学中,人类基因的染色体图谱在进行DNA序列对比是就用到了矩阵的相似。

基于生物学中序列决定结构,结构决定功能的普遍规律,将核酸序列和蛋白质一级结构上的序列都看成由基本字符组成的字符串,检测序列之间的相似性,发现生物序列中的功能、结构和进化的信息。

2、遥感图像对比

图像配准就是将不同时间、不同传感器(成像设备)或不同条件下(天候、照度、 摄像位置和角度等)获取的两幅或多幅图像进行匹配、叠加的过程,它已经被广泛地应用 于遥感数据分析、计算机视觉、图像处理等领域。

由于同一场景拍摄的图像是真实的三维,世界在不同时间向成像平面的一系列投影,而图像与图像之间具有较大的相关性和信息冗 余,所以无论所处理的图像是发生何种形式的变化。

3、行列式进行保密编译

在英文中有一种对消息进行保密的措施,就是把英文字母用一个整数来表示。然后传送这组整数。这种方法是很容易根据数字出现的频率来破译,例如出现频率特别高的数字,很可能对应于字母E。

可以用乘以行列式和矩阵A的方法来进一步加密。假如A是一个行列式等于±1的整数矩阵,则A1的元素也必定是整数。而经过这样变换过的消息,同样两个字母对应的数字不同,所以就较难破译。接收方只要将这个消息乘以A-1就可以复原。

4、行列式在企业设备更新中的应用

企业为了创造更大的价值,需要购买新设备,但买新设备花钱较多。而继续使用旧设备需要大量的维修费。为了解决这一问题,行列式和矩阵就可以计算出在哪一年更新设备,使企业的经济效益最好。

5、行列式在文献管理中的应用

比如现代搜索中往往包括几百万个文件和成千的关键词,但可以利用矩阵和行列式的稀疏性,节省计算机的存储空间和搜索时间。

❾ 矩阵的实际应用有哪些

如下:

1、矩阵在经济生活中的应用

矩阵就是在行列式的基础上演变而来的,可活用行列式求花费总和最少等类似的问题;可借用特征值和特征向量预测若干年后的污水水平等问题;也可利用矩阵的方法求线性规划问题中的最优解,求解企业生产哪一种类型的产品,获得的利润最大。

2、在人口流动问题方面的应用

这是矩阵高次幂的应用,比如预测未来的人口数量、人口的发展趋势等。

3、矩阵在密码学中的应用

可用可逆矩阵及其逆矩阵对需发送的秘密消息加密和译密。

4、矩阵在文献管理中的应用

在现代搜索中往往包括几百个文件和成千的关键词,但可以利用矩阵和向量的稀疏性,节省计算机的存储空间和搜索时间。

矩阵图法具有以下几个特点:

①可用于分析成对的影响因素。

②因素之间的关系清晰明了,便于确定重点。

③便于与系统图结合使用。

❿ 矩阵的实际应用都有哪些

1、矩阵在经济生活中的应用

矩阵就是在行列式的基础上演变而来的,可活用行列式求花费总和最少等类似的问题;可借用特征值和特征向量预测若干年后的污水水平等问题;也可利用矩阵的方法求线性规划问题中的最优解,求解企业生产哪一种类型的产品,获得的利润最大。

2、在人口流动问题方面的应用

这是矩阵高次幂的应用,比如预测未来的人口数量、人口的发展趋势等。

3、矩阵在密码学中的应用

可用可逆矩阵及其逆矩阵对需发送的秘密消息加密和译密。

4、矩阵在文献管理中的应用

在现代搜索中往往包括几百个文件和成千的关键词,但可以利用矩阵和向量的稀疏性,节省计算机的存储空间和搜索时间。

矩阵图法的用途十分广泛,在质量管理中,常用矩阵图法解决以下问题:

1、把系列产品的硬件功能和软件功能相对应,并要从中找出研制新产品或改进老产品的切入点;

2、明确应保证的产品质量特性及其与管理机构或保证部门的关系,使质量保证体制更可靠;

3、明确产品的质量特性与试验测定项目、试验测定仪器之间的关系,力求强化质量评价体制或使之提高效率;

4、当生产工序中存在多种不良现象,且它们具有若干个共同的原因时,希望搞清这些不良现象及其产生原因的相互关系,进而把这些不良现象一举消除。

热点内容
推荐编程课 发布:2025-05-15 22:34:12 浏览:617
表拒绝访问 发布:2025-05-15 22:29:37 浏览:977
电脑怎样解压文件 发布:2025-05-15 22:25:32 浏览:438
dns服务器怎么看 发布:2025-05-15 22:17:27 浏览:151
3dm的压缩包 发布:2025-05-15 22:09:23 浏览:661
和存储字长 发布:2025-05-15 21:54:09 浏览:515
用什么写c语言 发布:2025-05-15 21:35:56 浏览:418
linux读取u盘 发布:2025-05-15 21:32:13 浏览:508
c语言dos 发布:2025-05-15 21:18:17 浏览:664
sci编译英文 发布:2025-05-15 21:16:57 浏览:383