循规蹈矩学加密
接下来我们看看Java端的解密代码该怎样写:
留意这里我们用到的是PKCS5Padding,上面加密的时辰不是用的是pkcs7padding吗?怎么这里酿成5了呢? 我们先来相识一下什么是pkcs。pkcs的全称是Public Key Cryptography Standards(公钥加密尺度),这是RSA尝试室拟定的一系列的公钥暗码编译尺度,较量闻名的有pkcs1, pkcs5, pkcs7, pkcs8这四个,它们别离打点的是差异的内容。在这里我们只是用它来添补,以是我们只存眷pkcs5和pkcs7就够了。那么pkcs5和pkcs7有什么区别呢?着实在添补方面它们两个的算法是一样的,pkcs5是pkcs7的一个子集,区别在于pkcs5是8字节牢靠的,而pkcs7可所以1到255之间的恣意字节。但用在AES算法上,由于AES尺度划定块巨细必需是16字节可能24字节可能32字节,不行能用pkcs5的8字节,以是AES算法只能用pkcs7添补。可是因为java早期工程师犯的一个定名上的错误,他们把AES添补算法的名称设定为pkcs5,而现实实现中实现的是pkcs7,以是我们在java端开拓解密的时辰必要行使pkcs5。 AES-CBC 谈完了不安详的AES-ECB,我们来做一下相对安详一些的AES-CBC模式。 1. AES-CBC的Javascript加密 直接上代码:
跟上面的AES-ECB差不多,独一区别只是在start函数里界说了一个iv。 2. AES-CBC的Java解密 下面是Java代码:
也是同样,跟上面用AES-ECB时的模式险些千篇一律,只是增进了一个IvParameterSpec,用来天生iv,在cipher.init内里增进了一个iv参数,除此之外完全沟通,就这样我们就已经实现了一个简朴的CBC模式。 RSA 可是以上两种做法都明明长短常不安详的,由于我们把加密用的密钥和iv参数都直接袒露在了前端,为此我们必要一种越发安详的加密要领——RSA。由于RSA长短对称加密,纵然我们把加密用的公钥完全袒露在前端也不必担忧,别人纵然截获了我们的密文,但由于他们没有解密密钥,是无法解出我们的明文的。 1. 天生密钥对 要用RSA加密,起首我们必要天生一个公钥和一个私钥,我们可以直接执行呼吁ssh-keygen。它会问我们密钥文件生涯的文件夹,留意必然要单独找一个文件夹存放,不要放在缺省文件夹下,不然你一般行使的ssh公钥和私钥就都被包围了。 获得公钥文件之后,因为这个公钥文件是rfc4716名目标,而我们的forge库要求一个pkcs1名目标公钥,以是这里我们必要把它转换成pem名目(也就是pkcs1名目):
2. RSA的Javascript加密 获得pem名目标公钥之后,我们来看一下js的代码:
一句话就完成整个加密进程了,这就是forge的强盛之处。 3. RSA的Java解密 接下来我们看解密。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |