非对称加密算法是一种密钥的保密方法。
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;甲方再用自己的私钥对乙方发送回来的数据进行验签。
甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。
以上是百度百科的官方的介绍的,嘻嘻,抄袭一下,转载自写出处,嘻嘻,九零后皮一下
言归正传我还是贴代码吧,
<?php
/**
* Mr.z
* 设置非对称加密的文件
* 2019年3月12日11:35:52
*/
class Password{
//获取自己的私钥
public function setupPrivKey()
{
$privKey = file_get_contents('pri.key');
return $privKey;
}
//获取对方的公钥
public function setupPubKey()
{
$pubKey = file_get_contents('pub.key');
return $pubKey;
}
//计算加密的数据
public function encryptionMethod($content = ''){
$encrypt_data = '';
openssl_public_encrypt($content, $encrypt_data,$this->setupPubKey());
$encrypt_data = base64_encode($encrypt_data);
return $encrypt_data;
}
//计算解密的数据
public function decryptionMethod($content = ''){
$encrypted = $content;
$encrypted = base64_decode($content);
$result = openssl_private_decrypt($encrypted, $decrypted, $this->setupPrivKey());
if ($result) {
return $decrypted;
}
return null;
}
}
$obj= new Password();
$mima = $obj->encryptionMethod('这里是一个甲方的对付的的接口');
print_r($mima);
echo "<br>";
$result = $obj->decryptionMethod($mima);
print_r($result);
这就是一个简单的非对称加密,有人说你这个加密的过程也太草率啦,没关系啦,自己补充嘛,比如加盐加密等,不准有MD5哦,因为它太短啦,不好,嘻嘻
同样 :
一 。我们开始走流程,第一步我们肯定要明白pri.key pub.key 这两个文件的内容哦 , 你可以在网上的在线编译这两个文件的哦,比如我就用 http://web.chacuo.net/netrsakeypair 这个网址生成的公钥与私钥
二 。我们可能公钥与私钥是干什么的,有什么用,自行网上看应用场景
三 。我们用于公钥和私钥是不都是给自己用的,我们
date(甲方重要机密数据) -----(乙方提供的公钥加密)----- >> 乙方获取数据使用自己的私钥解密
date(乙方重要机密数据) -----(甲方提供的公钥加密)----- >> 甲方获取数据使用自己的私钥解密
这个要明白自己公司的公钥是给比别人用的,私钥是给自己的解密用的(要求别人使用自己的加密的方法加密数据 ,自己才能 解密哦)
四 。结束啦,最后强调一下
非对称加密:比较对称加密而言,无需拥有同一组密钥,非对称加密是一种“信息公开的密钥交换协议”。非对称加密需要公开密钥和私有密钥两组密钥,公开密钥和私有密钥是配对起来的,