RSA加密:RSA密碼體制是一種公鑰密碼體制察纯,加密算法公開闸拿,以分配的密鑰作為加密解密的關(guān)鍵。一般來說亩歹,在一對(duì)公私鑰中匙监,公鑰和私鑰都可以用來加密和解密凡橱,即公鑰加密能且只能被對(duì)應(yīng)的私鑰進(jìn)行解密,私鑰加密能且只能被對(duì)應(yīng)的公鑰進(jìn)行解密亭姥。但我們一般都用公鑰加密稼钩,私鑰解密,而且生成的私鑰往往會(huì)比公鑰蘊(yùn)含了更多的信息量达罗。(這里說的加密肯定是可逆的坝撑,不然直接銷毀就可以了沒必要再去加密,加密是為了保障數(shù)據(jù)的安全和驗(yàn)證身份粮揉。)
RSA簽名:簽名就是在這份資料后面增加一段強(qiáng)而有力的證明巡李,以此證明這段信息的發(fā)布者和這段信息的有效性完整性。RSA簽名常用的就是將這份信息進(jìn)行hash扶认,得到一個(gè)hash值侨拦,再將hash值加密作為簽名,后綴在信息的末尾辐宾。接收方接到傳輸?shù)馁Y料后狱从,使用私鑰解密這段加密過的hash,得到hash值叠纹,然后對(duì)信息原文進(jìn)行hash季研,對(duì)比兩次hash是否一致(驗(yàn)簽)。簽名的過程是不可逆的誉察,因?yàn)閔ash是不可逆的训貌,畢竟那么大的文件被hash成一段字符串還能還原的話那就碉堡了。
在使用RSA進(jìn)行通訊的時(shí)候冒窍,一般是兩者結(jié)合递沪,即:加密>簽名>解密>驗(yàn)簽
加密和可逆的,而簽名是不可逆的
我們可以對(duì)一份資料用公鑰加密综液,再用私鑰解密款慨,但我們對(duì)這份資料進(jìn)行簽名則是不可逆的,因?yàn)楣1旧硎遣豢赡娴摹?/p>
加密和簽名都涉及到了使用公鑰加密谬莹,前者加密了信息檩奠,后者加密了信息的hash
前者使用加密保障內(nèi)容不被泄露,后者使用加密用來身份驗(yàn)證附帽。
為什么簽名是對(duì)信息hash之后加密埠戳,而不是加密一些特定的字符?
這是因?yàn)榉乐怪虚g人嘗試向私鑰擁有者反復(fù)發(fā)送一些特定的字符蕉扮,得到加密后的信息整胃,達(dá)到破解或者偽造之類的目的。所以用私鑰隨便加密信息是不安全的喳钟。
RSA的簽名與加密一般用在需要非常安全的環(huán)境下屁使,例如支付
由于RSA簽名與加密需要比平時(shí)的通訊產(chǎn)生更多的工作量在岂,所以一般只會(huì)用在需要保證數(shù)據(jù)安全的地方(但隨著設(shè)備性能的提升它會(huì)擴(kuò)展到很多方面,畢竟保證隱私也是很重要的蛮寂,雖然有些人并不在乎這些)蔽午。HTTPS的加密解密可以參考http://www.reibang.com/p/1b48c37b94b9