密码的种类有很多,这里列举几个知名的密码种类
1、摩斯电码
摩尔斯电码由点(.)嘀、划(-)嗒两种符号按以下原则组成:
一点为一基本信号单位,每一划的时间长度相当于 3 点的时间长度。在一个字母或数字内,各点、各划之间的间隔应为两点的长度。字母(数字)与字母(数字)之间的间隔为 7 点的长度。
2、恺撒移位密码。
也就是一种最简单的错位法,将字母表前移或者后错几位。
例如: 明码表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码表:DEFGHIJKLMNOPQRSTUVWXYZABC,这就形成了一个简单的密码表,如果想写 frzy(即明文),那么对照上面密码表编成密码也就
是 iucb(即密文)了。
密码表可以自己选择移几位,移动的位数也就是密钥。
3、栅栏易位法。
即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。
举例:
TEOGSDYUTAENNHLNETAMSHVAED
解:
将字母分截开排成两行,如下
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再将第二行字母分别放入第一行中,得到以下结果 THE LONGEST DAY MUST HAVE AN END。
扩展资料:
密码是一门科学,有着悠久的历史。密码在古希腊与波斯帝国的战争中就被用于传递秘密消息。在近代和现代战争中,传递情报和指挥战争均离不开密码,外交斗争中也离不开密码。
密码一般用于信息通信传输过程中的保密和存储中的保密。随着计算机和信息技术的发展,密码技术的发展也非常迅速,应用领域不断扩展。密码除了用于信息加密外,也用于数据信息签名和安全认证。
这样,密码的应用也不再只局限于为军事、外交斗争服务,它也广泛应用在社会和经济活动中。当今世界已经出现了密码应用的社会化和个人化趋势。
例如:可以将密码技术应用在电子商务中,对网上交易双方的身份和商业信用进行识别,防止网上电子商务中的“黑客”和欺诈行为。
应用于增值税发票中,可以防伪、防篡改,杜绝了各种利用增值税发票偷、漏、逃、骗国家税收的行为,并大大方便了税务稽查。
应用于银行支票鉴别中,可以大大降低利用假支票进行金融诈骗的金融犯罪行为;应用于个人移动通信中,大大增强了通信信息的保密性等等。
参考资料来源:百度百科--密码
三分密码
三分密码由Felix
Delastelle发明(他也发明了四方密码和二分密码)。二分密码是二维的,用5×5(或6×6)的矩阵加密,但三分密码则用3×3×3的。它是第一个应用的三字母替换密码。
#include stdlib.h
#include string.h
#include stdio.h
int Three_Parties(char* data, int data_length)
{
typedef unsigned char UCHAR;
int i, index;
char* dict;
UCHAR* polybius_index;
//检查讯息的合法性
for(i = 0; i data_length; i++)
{
if(data[i] = 'a' data[i] = 'z')
{
//小写转化为大写
data[i] = 0xDF; //小写字母第5位置为0即变为大写
//data[i] -= 'a' - 'A'; //这种写法也可以,但没有上一种效率高
}
else if(data[i] 'A' || data[i] 'Z')
{
//包含非字母的字符
return 1;
}
}
dict = "LEOCBFQSTNARGHJUWXDVIKMPYZ/";
polybius_index = (UCHAR*)malloc(3 * data_length);
for(i = 0; i data_length; i++)
{
index = strchr(dict, data[i]) - dict;
polybius_index[i] = index / 9;
index %= 9;
polybius_index[i + data_length] = index / 3;
polybius_index[i + 2 * data_length] = index % 3;
}
for(i = 0; i 3 * data_length; i += 3)
{
index = polybius_index[i]*9 + polybius_index[i+1]*3 + polybius_index[i+2];
data[i/3] = dict[index];
}
free(polybius_index);
return 0;
}
int main(int argc, char* argv[])
{
char data[] = "helloworld";
if(Three_Parties(data, strlen(data)) == 0)
{
printf("%s", data);
}
else
{
printf("input error");
}
return 0;
}
//加密部分还可以改成建索引表,那样效率会更高,但代码稍微复杂些。
密码是一种用来混淆的技术,它希望将正常的(可识别的)信息转变为无法识别的信息。当然,对一小部分人来说,这种无法识别的信息是可以再加工并恢复的。密码在中文里是“口令”的通称。登录网站、电子邮箱和银行取款时输入的“密码”其实严格来讲应该仅被称作“口令”,因为它不是本来意义上的“加密代码”,但是也可以称为秘密的号码。主要限定于个别人理解(如一则电文)的符号系统。如密码电报、密码式打字机。
“加密代码”的加密与解密都离不开数学的支持,随着数学的发展,密码的加密方式以及解密难度也随之直线上升。
加密方法
RSA算法
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1.e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质(互质:两个正整数只有公约数1时,他们的关系叫互质);再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密钥对。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互换使用,即:A=B^e2 mod n;B=A^e1 mod n
ECC加密法
ECC算法也是一个能同时用于加密和数字签名的算法,也易于理解和操作。同RSA算法是一样是非对称密码算法使用其中一个加密,用另一个才能解密。
公开密钥算法总是要基于一个数学上的难题。比如RSA 依据的是:给定两个素数p、q 很容易相乘得到n,而对n进行因式分解却相对困难。那椭圆曲线上有什么难题呢?
考虑如下等式 :
K=kG [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数]
不难发现,给定k和G,根据乘法法则,计算K很容易;但给定K和G,求k就相对困难了。这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k(kn,n为基点G的阶)称为私有密钥(privte key),K称为公开密钥(public key)。
ECC的功能比RSA强。而令人感兴趣的是点和点的过程,这也是其功能之来源。
二方密码
二方密码比四方密码用更少的矩阵。得出加密矩阵的方法和四方密码一样。
这种加密法的弱点是若两个字同列,便采用原来的字母,例如he便加密作HE。约有二成的内容都因此而暴露。
四方密码
四方密码用4个5×5的矩阵来加密。每个矩阵都有25个字母(通常会取消Q或将I,J视作同一样,或改进为6×6的矩阵,加入10个数字)。
替换加密法: 用一个字符替换另一个字符的加密方法。
换位加密法: 重新排列明文中的字母位置的加密法。
回转轮加密法: 一种多码加密法,它是用多个回转轮,每个回转轮实现单码加密。这些回转轮可以组合在一起,在每个字母加密后产生一种新的替换模式。
多码加密法:
一种加密法,其替换形式是:可以用多个字母来替换明文中的一个字母。
夹带法: 通过隐藏消息的存在来隐藏消息的方法。
三分密码
首先随意制造一个3个3×3的Polybius方格替代密码,包括26个英文字母和一个符号。然后写出要加密的讯息的三维坐标。讯息和坐标四个一列排起,再顺序取横行的数字,三个一组分开,将这三个数字当成坐标,找出对应的字母,便得到密文。
仿射密码
仿射密码是一种替换密码。它是一个字母对一个字母的。它的加密函数是e(x)=ax+b(mod m),其中 a和m互质。m是字母的数目。
译码函数是d(x)=a^(x-b)(mod m),其中a^是a在M群的乘法逆元。
波雷费密码
希尔密码
维热纳尔方阵
著名的维热纳尔方阵由密码学家维热纳尔编制,大体与凯撒加密法类似。即二人相约好一个密钥(单词),然后把加密后内容给对方,之后对方即可按密码表译出明文。密钥一般为一个单词,加密时依次按照密钥的每个字母对照明码行加密。
由维热纳尔方阵加密的密码,在没有密钥的情况下给破译带来了不小的困难。维热纳尔方阵很完美的避开了概率算法(按每个语种中每个字母出现的概率推算。例如英语中最多的是e),使当时的密码破译师必须重新找到新方法破译。
埃特巴什码
埃特巴什码是一个系统:最后一个字母代表第一个字母,倒数第二个字母代表第二个字母。
栅栏加密法
栅栏加密法是一种比较简单快捷的加密方法。栅栏加密法就是把要被加密的文件按照一上一下的写法写出来,再把第二行的文字排列到第一行的后面。相应的破译方法就是把文字从中间分开,分成2行,然后插入。栅栏加密法一般配合其他方法进行加密。
针孔加密法
这种加密法诞生于近代。由于当时邮费很贵,但是寄送报纸则花费很少。于是人们便在报纸上用针在需要的字下面刺一个孔,等到寄到收信人手里,收信人再把刺有孔的文字依次排列,连成文章。人们已经很少使用这种加密了。
猪圈加密法
在18世纪时,Freemasons为了使让其他的人看不懂他所写而发明的,猪圈密码属于替换密码流,但它不是用一个字母替代另一个字母,而是用一个符号来代替一个字母, 把26个字母写进下四个表格中,然后加密时用这个字母所挨着表格的那部分来代替。
对称加密算法
DES:数据加密标准,速度较快,适用于加密大量数据的场合(块加密法);
3DES:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高(块加密法);
RC2和 RC4:用变长密钥对大量数据进行加密,比 DES 快(流加密法);
IDEA国际数据加密算法,使用 128 位密钥提供非常强的安全性(块加密法);
AES:高级加密标准,是下一代的加密算法标准,速度快,安全级别高, AES 标准的一个实现是 Rijndael 算法(块加密法);
BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快,而经过改进后就是TWOFISH,AES的候选者之一(块加密法)。
世界上有很多种密码,主要分类有以下几种:
1、摩斯密码,最早是一些表示数字的点和划,数字对应单词,需要查找一本代码表才能知道每个词对应的数;
2、四方密码,是一种对称式加密法,由法国人发明,这种方法将字母两个一组,采用多字母替换密码达到加密的目的;
3、希尔密码,是运用基本矩阵论原理的替换密码,由法国人希尔在1929年发明;
4、波雷费密码,是一种对称式密码,是首种双字母取代的加密法,最早出现在一份1854年3月26日由查尔斯·惠斯登签署的文件中,他的朋友波雷费勋爵普及了这个加密法;
5、三分密码,三分密码由Felix Delastelle发明。三分密码是三维的,用3×3×3的公式进行加密,它是第一个应用的三字母替换密码。