简单易懂学加密

参考资料:http://www.iplaysoft.com/encrypt-arithmetic.html

http://www.360doc.com/content/14/0323/01/1355383_362832203.shtml

简单加密实例入门:

发送一串文字ABCDEF,要将这些文字变为密文,就将A替换为C,将B替换为D,将C替换为E,将D替换为F,将E替换为G,将F替换为H,最后ABCDEF就使用CDEFGH,而ABCDEF才是明文,是真正的内容,而CDEFGH就是加密后的密文,并不是真正的内容,从加密过程可以看出,明文“ABCDEF”通过将每个字母替换成后面第二个字母的方法被加密城了“CDEFGH”,在这里,将每个字母替换成后面第二个字母的方法可以称为加密方法,也成为加密算法,当内容被加密之后,接收者还必须先将密文解密,才能看懂内容,这里就将密文“CDEFGH”的每个字母替换成前面第二个字母,便得到明文“ABCDEF”。

加密算法和加密密码是不一样的,知道加密算法并没有多大用处,也不能对加密的文字进行解密。在上例中,将每个字谜替换成后面第二个字母就是密钥(密码),如果别人只是知道我们使用的加密算法是字母替换发,但他不知道每个字母具体被替换成了哪个字母,是没办法将密文还原的,所以对数据加密的算法可以被公开,但是机密的密钥一定要保密不能被窃取,否则密文也就变得不安全了,因此,如何保证密钥的安全是相当重要的。

加密算法又分为对称加密与非对称加密:对称加密双方采用共同密钥,使用该秘钥加密,再使用相同的秘钥进行解密;非对称秘钥,这种加密方式存在两个密钥,密钥-- 一种是公共密钥(正如其名,这是一个可以公开的密钥值),一种是私人密钥(对外保密)。 您发送信息给我们时,使用公共密钥加密信息。 一旦我们收到您的加密信息,我们则使用私人密钥破译信息密码。

下面谈一下我们经常使用的几种加密算法:

对称加密算法(私钥算法)

DES(Data Encryption Standard): DES加密共有三种形式,分为DWS(40-bit长度加密),DES(56-bit长度加密)以及3DES(3倍的56-bit长度加密,即168-bit长度加密);由于3DES加密长度够长,安全性够高,所以推荐使用3DES。   AES(Advanced Encryption Standard):AES加密共有三种形式,分为AES 128 (128-bit长度加密),AES 192 (192-bit长度加密)以及AES 256 (256-bit长度加密);由于AES 256加密长度够长,安全性够高,所以推荐使用AES 256。

非对称加密算法:

MD5(Message Digest 5):将任何数据通过计算后输出128-bit长度的Hash值。

SHA-1(Secure Hash Algorithm 1):将任何数据通过计算后输出160-bit长度的Hash值。

下面详细了解一下MD5加密算法:

MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过比在表中比破解密码的MD5算法散列值,通过匹配从映射表中找出破解密码所对应的原始明文。

MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。

数字签名:数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

时间: 2024-12-20 20:49:51

简单易懂学加密的相关文章

C#,ASP.NET简单的MD5加密,解密

简单的MD5加密 首先要有一个加解密的规则  就是key 代码如下 // 创建Key public string GenerateKey() { DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create(); return ASCIIEncoding.ASCII.GetString(desCrypto.Key); } 然后就是加密 传入的参数分别为你要加密的字符串,

ios通知使用 书上案例 简单易懂

/* The notification name */const NSString *ResultOfAppendingTwoStringsNotification =@"ResultOfAppendingTwoStringsNotification"; /* Keys inside the dictionary that our notification sends */const NSString*ResultOfAppendingTwoStringsFirstStringInfo

.net新手爬虫教学,简单易懂。

这两天没事研究爬虫,发现了好多处理方法,但是我用着最顺手的是Nsoup这个包. 下面给大家分享一下我在亚马逊上爬取的数据.我是用的webForm写的,用winForm是一样的.今天给打加分享一下我写的代码.希望得到打什么的指点. System.Net.CookieContainer testcookie = new System.Net.CookieContainer(); protected void Button1_Click(object sender, EventArgs e) { st

以麦当劳,肯德基优惠券接口数据为例进行的数据解析方法,简单易懂

以麦当劳,肯德基优惠券接口数据为例进行的数据解析方法,简单易懂,这是我个人觉得是一种比较简单易懂的json数据解析方法: 看下其中一个类的代码 package com.example.text_json_deno_model; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;

java生成RSA公私钥字符串,简单易懂

java生成RSA公私钥字符串,简单易懂 解决方法: 1.下载bcprov-jdk16-140.jar包,参考:http://www.yayihouse.com/yayishuwu/chapter/1537 2.java代码 KeyPairGenerator keyPairGenerator = KeyPairGenerator .getInstance("RSA"); keyPairGenerator.initialize(2048); KeyPair keyPair = keyPa

Java开发经验分享之JAVA简单实现DES加密与实现DES解密

前言:相信很多小伙伴在开发过程中都会加密问题.当然,小菜在开发中也遇到了,这里呢,小菜想说的是JAVA简单实现DES加密. 今天就简单实现一下如何DES加密解密.话不多说,代码如下.直接可用.希望能成为你项目中的一个很好的工具类. public class DesEncrypt { // DES加密密钥key public static String key = "sdfDA12r3JHV214IJrwerDSO892BK2345nrekk35oewr4wrwrenlklknsdlemifzkw

1分钟学会百度网盘不限速教程,简单易懂

由于百度网盘的限速,下载个资料速度堪比蜗牛,不想冲会员,又想要高速下载百度网盘资源怎么办,今天给大家带来的1分钟学会百度网盘不限速教程,简单易懂,亲测有效. https://www.macdown.com 由网友"哩呵"制作的网盘助手脚本,需要通过拓展 Violentmonkey (暴力猴)或者 Tampermonkey (油猴)来启用,原理是通过显示直链,然后使用Neat Download Manager Mac来加速下载. 使用方法:(安装部分) 1.安装浏览器插件,Violent

C#最简单的文本加密

private char[] TextEncrypt(string content, string secretKey) { char[] data = content.ToCharArray(); char[] key = secretKey.ToCharArray(); for (int i = 0; i < data.Length; i++) { data[i] ^= key[i % key.Length]; } return data; } private string TextDecr

利用php做服务器和web前端的界面进行交互(简单易懂篇)

希望查看本篇文章的学者首先查看一下php的基础知识,因为今天用到这个东西,现学现卖吧.后续会更新php服务器的基础知识! 1.首先你要有一个界面   我这里利用我项目开发的一个简单界面截取下来进行讲解!项目机密  请勿**,你懂得! html代码和界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transit