秘钥加密实现简单概述

开始之前:只对秘钥加密方式做简单描述。

对称加密:
使用同一组秘钥对数据进行加密与解密。即加密解密都使用同一串密钥,
常见的对称加密的算法有:
DES: Data Encryption Standard, 56bits
3DES:
AES: Advanced (128, 192, 256bits)
Blowfish, Twofish
IDEA, RC6, CAST5
对称加密在加密时是把原始数据分割成固定大小的块,逐个对数据进行加密。

对称加密的优点是加密解密都使用同一个密钥,(单向加密解密使用不同的密钥公钥加密私钥解密),加密解密算法简单,所以执行加密与过程中相对非对称加密算法执行效率更高。但是对称加密出的数据体积更大。
但是由于对称加密的特性(只有一串钥匙),造成了秘钥分发困难,数据来源无法确认等状况。
对称的密钥交换:
1、 A: a,p 协商生成公开的整数a, 大素数p
    B: a,p
2、 A:生成隐私数据 :x (x<p ),计算得出 a^x%p,发送给B
    B:生成隐私数据 :y,计算得出 a^y%p,发送给A
3、 A:计算得出 [(a^y%p)^x] %p = a^xy%p, 生成为密钥
    B:计算得出 [(a^x%p)^y] %p = a^xy%p,生成为密钥

“`

非对称加密:
非对称加密共有两把钥匙。分为公钥(public key)与私钥(private, secret key),通常情况下会将公钥分发出去,而私钥自己保留。从私钥中可以提取出公钥。
比较常见的加密算法有:RSA(加密,数字签名) ,DSA(数字签名) ,ELGamal
其中一把加密过的数据只能使用另外一把解开,
加密解密的秘钥并不一致,造成了算法相对复杂,所以在加密解密过程中会需要大量的时间。但是加密过的数据体积并不会扩大。所以此类密算法比较适合对较小的数据进行加密,
当加密的一部份目的是为了让对方对自己的身份进行验证时或者向对方声明自己的身份时,加密过程与加密产生的文件称为数字签名。验证身份的过程是及使用本地保存的公钥进行解密,解密成功则为此公钥对应的主机的数据。
散列算法:
算列算法的目的是将数据生成特定的特征码,使用散列算法生成的特征码的长度是固定的。但进行加密的数据可以是任意长度的(包括1bit),源数据产生细小的变换,生成的特征码将产生巨大的变化(雪崩效应),生成的特征码无法进行反推,即由特征码生成原始数据。散列算法多用于确定数据的完整性(对接收到的数据进行散列算计计算,生成特征码,与官方提供的特征码进行对比),散列算法又称哈希。

常见的散列算法:
md5: 128bits、 sha1: 160bits、 sha224
sha256、 sha384、 sha512
散列算法相关命令:
sha1sum:
    简介  sha1sum 生成160位概要值,sha1sum可以从标准输入读取数据,也可以指定文件。
    格式 sha1sum 选项 文件

     sha1sum 文件 > 文件 :将文件的哈希值保存在文件中。
     sha1sum 文件 >> 文件 :将文件的哈希值追加到文件中。

    --check :校验
    sha1sum --check 保存哈希值的文件。

例:sha1sum /dev/sr0
    计算光盘的哈希值。

sha512sum
    格式同上
加密实现:
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方

非对称秘钥加密信息: 发送方使用接受方的公钥加密,接收方收到数据,使用自己的私钥进行解密。
某同学在宿舍公用计算机上面使用文本文件来记录每天的心情故事,但是宿舍公用计算机不能设置密码,同学担心自己的日记被偷看,特委托你来完成如下加密程序: 该程序是一个可加密数据的日记记录工具,具有如下功能要求: 1. 运行系统后,系统给出三个选项:1)新增日记;2)阅读日记;3)退出系统 2. 选择功能1)后,系统提示用户输入日记文件名称和路径,并创建文本文件;同时,用户输入两个字符a和b,作为密钥;创建文件后,用户开始输入日记内容,日记内容为文本形式,将日记内容加密,然后将加密后的内容写入文件中; 3. 选择功能2)后,系统提示用户输入要打开的日记文件的路径和名称,打开文件后,读取文件中的密文,解密后显示出来; 4. 加密算法推荐大家采用简单的文本加密算法来实现,算法思想如下,从明文读入一个字符(英文),使用密钥a与该字符做异或操作,将结果作为密文保存下来,再读入第二个字符,使用密钥b与该字符做异或操作,同样保存结果,以此类推加密全文;解密过程可将密文作为输入完成整个加密过程,返回就是明文。如果同学们有兴趣加密中文,那么可将中文的高八位使用密钥a加密,低八位使用密钥b加密,完成加密过程。 这个加密算法需要使用C语言的位运算运算符,包括:& 按位与、| 按位或、^ 按位异或、~ 取反、<> 右移。 那么本算法中的异或可用如下方法完成,c为明文中取得的一个字符,该字符加密(解密)指令如下: c = plaintext[i]; //i+1是奇数使用密钥a,是偶数采用密钥b cipher[i] = c ^ a; 那么在cipher[i]中保存的就是c的密文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值