程序猿有两个密钥,一个成为 公钥,一个成为 私钥。
程序猿的 公钥可以发放给任何想用的人,但私钥只能自己使用。 密钥可以加密信息。加密信息就是使信息打乱,因此,只有拥有正确密钥的人才可以读取。 只有用程序猿的两个密钥加密信息,另一个密钥才能解开这些信息。
程序狒狒使用程序猿的公钥加密一段信息,程序猿可以使用自己的私钥反解出信息原文。其他人也可以得到程序狒狒的机密信息,但没有程序猿的私钥,这些信息只能看见密文,密文使不可读的。
 |  | "猿猿,我欠你的一万块钱不还了!-狒狒" |  | HNFmsEm6Un BejhhyCGKOK JUxhiygSBCEiC 0QYIh/Hn3xgiK BcyLK1UcYiY lxx2lCFHDC/A |
 |  | HNFmsEm6Un BejhhyCGKOK JUxhiygSBCEiC 0QYIh/Hn3xgiK BcyLK1UcYiY lxx2lCFHDC/A |  | "猿猿,我欠你的一万块钱不还了!-狒狒" |
借助一个合适的软件,程序猿可以给一个文档或者数据生成一个数字签名。 数字签名就好像是程序猿盖在数据上的个人的印章,这个印章很难伪造。 通过这个印章,我们就能看出这个文件在传播途中是否被篡改。
 | 给一个文档签名,是用叫做“哈希”的算法对数据生成一个信息量很少的字符串。 这个字符叫做“散列值”。(通过散列值是无法还原出原来的信息的。) |
程序猿用他的私钥加密这段“散列值”,得到的值就叫做“数字签名”。
程序猿给文档加上了数字签名,生成的散列值也被签名。
程序猿把这个文档传给程序猴子。
 | 首先,程序狒狒用户程序猿的公钥还原出文档的散列值(哈希值)。 如果正确,它验证程序猿的散列值是否跟文档所产生的一致。 首先,程序狒狒得到文档的哈希值,然后把此值跟数字签名还原出的散 |