通过上一节的学习读者应该能够更好的理解RSA加密算法在套接字传输中的使用技巧,但上述代码其实并不算完美的,因为我们的公钥和私钥都必须存储在本地文本中且公钥与私钥是固定的无法做到更好的保护效果,而一旦公钥与私钥泄密则整个传输流程都将会变得不安全...20.6.1 RSA算法封装要实现这个效果我们就需要封装一套可以在内存中生成密钥对的函数,当需要传输数据时动态的生成密钥对,并将公钥部分通过套接字传输给对应的客户端,当客户端收到公钥后则可以使用该公钥进行通信...= RSA_size(rsa); *encrypt = (char*)malloc(4096); if (strcmp(type, "public") == 0) { // 使用公钥加密...return TRUE;}// RSA 解密函数// type=public 使用公钥解密 type=private 使用私钥解密BOOL rsa_decrypt(char* pri_key, char...RSA密钥对的方法,那么实现密钥对远程分发将变得很容易实现,首先我们来看客户端的实现方式,当客户端成功连接到了服务端则首先接收服务端传来的公钥,当收到服务器传来的公钥后通过使用rsa_encrypt函数并用公钥对待发送字符串进行加密
通过上一节的学习读者应该能够更好的理解RSA加密算法在套接字传输中的使用技巧,但上述代码其实并不算完美的,因为我们的公钥和私钥都必须存储在本地文本中且公钥与私钥是固定的无法做到更好的保护效果,而一旦公钥与私钥泄密则整个传输流程都将会变得不安全...20.6.1 RSA算法封装 要实现这个效果我们就需要封装一套可以在内存中生成密钥对的函数,当需要传输数据时动态的生成密钥对,并将公钥部分通过套接字传输给对应的客户端,当客户端收到公钥后则可以使用该公钥进行通信...openssl/pem.h> #include #include extern "C" { #include <openssl/applink.c...; } // 如果是public则使用公钥解密/如果是private则使用私钥 if (strcmp(type, "public") == 0) { // 读入公钥文件...,当收到服务器传来的公钥后通过使用rsa_encrypt函数并用公钥对待发送字符串进行加密,加密后调用send将加密数据发送给服务端,解密动作与加密保持一致,同样使用公钥进行解密,这段客户端代码如下所示
>= 1.0.1e and associated developement headers required 很明显,系统的openssl版本过于古老, 而安装freeswitch的编译和运行需要openssl...坑一:openssl编译 一般c项目的configure过程中会通过配置–prefix=xxx来设定被编译lib的安装目录,我一般习惯放到/usr/local/xxx,所以openssl也不例外,顺利安装到.../usr/local/openssl-1.0.1h目录下,但freeswitch的configure还是一直提示openssl版本太低: configure: error: OpenSSL >= 1.0.1e...-fPIC来编译动态库,freeswitch通过动态链接的形式依赖openssl相关的库,于是加上shared和-fPIC后重新configure和make openssl: ....总结 纠结了这么久,最后的效果就两点: 升级openssl,覆盖默认的老版本openssl,这里选择的是覆盖,即安装到/usr目录下,因为我没找到可以让freeswitch运行时手动指定openssl相关
使用RSA公钥解密,用openssl命令就是openssl rsautl -verify -in cipher_text -inkey public.pem -pubin -out clear_text...这里使用rsa库,如果没有可以到官方网址https://pypi.python.org/pypi/rsa/3.1.4下载。 ..................................+++ e is 65537 (0x10001) $ openssl rsa -in pri2048.pem -out pub2048.pem...-RSAPublicKey_out writing RSA key $ echo -n 'Just a test' >1.txt $ openssl rsautl -sign -in 1.txt.../test_rsa.py Just a test 一切OK,注意,公钥pem从私钥里析出必须用-RSAPublicKey_out,这样pem文件的第一行和最后一行为以下,这样rsa.PublicKey.load_pkcs1
文章目录 一、公钥使用者 二、公钥分配 三、CA 证书格式 四、CA 证书吊销 一、公钥使用者 ---- 公钥密码体质中 , 用户的公钥也不能随意的公布 , 公钥无法防止伪造 , 欺骗 , 接收者无法确认公钥使用者的身份...; 公钥也不是所有人都可以持有的 , 需要经过认证后 , 才可以持有 ; 二、公钥分配 ---- 公钥分配 : ① 认证中心 CA : 公钥分配需要通过 认证中心 ( CA , Certification..., 不可伪造 ; ④ CA 证书作用 : 用于当做身份证明 , 解决信任问题 ; 公钥验证 : 任何人 都可以获取 认证中心公钥 , 该 CA 公钥作用是 验证某公钥是否是某实体合法拥有的 ; 三、CA...: 认证中心分配 签名算法 : CA 证书签名算法 发行者 : 有效期 : 起始时间 ~ 终止时间 主体名 : 谁持有该证书 公钥 : 公钥 , 使用方法 发行者 ID : 标识发行者 主体 ID :...证书持有者 ID 扩展域 : 扩展信息 认证机构签名 : 使用 CA 私钥对该 证书 进行签名 , 可以使用公钥验证 四、CA 证书吊销 CA 证书吊销 : 证书过期 公钥对应的私钥泄漏 CA 证书签名的私钥泄漏
PKI标准 在讲netty的具体支持之前,我们需要先了解一下公钥和私钥的加密标准体系PKI。PKI的全称是Public Key Infrastructure,也就是公钥体系。...第一代的PKI标准主要是由美国RSA公司的公钥加密标准PKCS,国际电信联盟的ITU-T X.509,IETF的X.509,WAP和WPKI等标准组成。...而PKCS是美国RSA公司的公钥加密标准,包括了证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。...当然,CA服务器也不是必须的,客户端校验的目的是查看证书中的公钥和发送方的公钥是不是一致的,那么对于不能联网的环境,或者自签名的环境中,我们只需要在客户端校验证书中的指纹是否一致即可。...使用openssl从证书中提取指纹的步骤如下: openssl x509 -fingerprint -sha256 -in my_certificate.crt 总结 通过设置client和server
对称加密 对称加密中加密和解密使用相同的密钥,加解密速度快,算法公开,计算量小。...非对称加密的三种用途: 数字签名:用于让接收方确认发送方的身份,并确认数据没有篡改 密钥交换:发送方用对方的公钥加密一个对称密钥,并发送给对方 数据加密 常见的非对称加密算法: RSA:加密、解密、签名...发送方发送信息时同时也发送自己的数字证书,当接收方收到信息和数字证书时,接收方使用Hash算法对证书中的个人信息和公钥进行提取指纹,然后使用CA的公钥对数字签名进行解密,对比自己生成的消息摘要和解密出来的数字签名是否一致...)发送给接收方 接收方用CA的公钥验证发送方数字证书的合法性,包括用CA的公钥解密数字证书、用相同的签名算法ID提取指纹并与签名比对、数字证书的有效期、证书的主体名和被访问的主机名或人名是否相同以及证书是否在吊销列表中...最后,服务端收到第三个随机数后,计算生成本次会话使用的会话密钥,然后发送编码改变通知和服务器握手结束通知。 随后的通信使用的http协议,然后使用会话密钥加密。
加了数字签名的公钥称为公钥证书,一般简称证书。有了证书来认证,可以有效防御中间人攻击,随之带来了一系列非技术性工作。例如:谁来发证书?如何发证书?不同机构的证书怎么互认?...纸质证书作废容易,数字证书如何作废?解决这些问题,需要制定统一的规则,即PKI体系。PKI体系是通过颁发、管理公钥证书的方式为终端用户提供服务的系统,最核心的元素是证书。...第一代的PKI标准主要是由美国RSA公司的公钥加密标准PKCS、国际电信联盟的ITU-T X.509、IETF的X.509、WAP和WPKI等标准组成。...而PKCS是美国RSA公司的公钥加密标准,包括了证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。它定义了一系列从PKCS#1到PKCS#15的标准。...当然:CA服务器也不是必须的,客户端校验的目的是查看证书中的公钥和发送方的公钥是不是一致的,那么对于不能联网的环境,或者自签名的环境中,我们只需要在客户端校验证书中的指纹是否一致即可。
keys.gnupg.net --send-keys [pub key ID] ... gpg --keyserver keys.gnupg.net --search-keys brain.zhang 生成公钥指纹供别人检查...--search-keys brain.zhang 验证公钥 gpg --edit-key 你可以键入fpr 来打印这个主钥的指纹,和你得到的主钥指纹进行对比,如果一致则键入trust...如果主钥被设置为绝对可信的(ultimately),GPG 会根据主钥的公钥验证从钥的签名,最终完成信任建立。最后键入quit 退出。...root@host ~]$ ssh-keygen 把生成的/root/.ssh/id_rsa.pub拷贝到在服务器上,安装公钥 [root@host ~]$ cd .ssh [root@host .ssh...使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。
公钥密码与RSA 公钥密码属于对称加密算法中的一种,公钥密码体系中有一个公钥和一个密钥,公钥是公开给所有人使用的,密钥只有自己知道,通常公钥根据一个密钥进行加密,根据另一个密钥进行解密。...RSA公钥密码算法是公钥密码算法中的一种,RSA中的加密和解密都可以使用公钥或者私钥,但是用公钥加密的密文只能使用私钥解密,用私钥加密的密文智能使用公钥解密。...二.SSL证书的原理 这里只叙述SSL证书的原理,至于如何申请证书,如何生成证书,如何部署证书可以Google得到。在介绍SSL证书前,需要先知道证书的指纹和指纹算法。...用户收到这份数据后,首先将原信息用同样的指纹算法计算结果,将得到的结果与指纹对比,如果一致,则说明信息没有被修改过。当然这个过程是有危险的,黑客完全可以修改内容并重新通过指纹算法生成指纹。...,例如xxx CA,如果是一个不受信任的证书机构,应用程序(比如浏览器)会发出警告,如果是受信任的证书机构,应用程序会使用预置的xxx CA的公钥去解密最后的指纹内容和指纹算法,然后再把前面的证书内容用指纹算法计算后与指纹内容比对
前面在公钥密码体制中说到的公钥、私钥就是密钥,公钥是加密使用的密钥,私钥是解密使用的密钥。...1.4、RSA简介 RSA是一种公钥密码体制,现在使用得很广泛。如果对RSA本身有兴趣的,后面看我有没有时间写个RSA的具体介绍。...由于是使用RSA这种公钥密码体制,“服务器”需要对外发布公钥(算法不需要公布,RSA的算法大家都知道),自己留着私钥。“客户”通过某些途径拿到了“服务器”发布的公钥,客户并不知道私钥。...其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上...,然后使用这个指纹算法计算”ABC Company”证书的指纹,将这个计算的指纹与放在证书中的指纹对比,如果一致,说明”ABC Company”的证书肯定没有被修改过并且证书是”SecureTrust
PKI 公钥基础设施 PKI借助数字证书和公钥加密技术提供可信任的网络身份。...密钥在非对称加密的领域里,指的是私钥和公钥,他们总是成对出现,其主要作用是加密和解密。常用的加密强度是2048bit。 RSA即非对称加密算法。...其核心思想是:比如A要给B发送数据,A先用摘要算法得到数据的指纹,然后用A的私钥加密指纹,加密后的指纹就是A的签名,B收到数据和A的签名后,也用同样的摘要算法计算指纹,然后用A公开的公钥解密签名,比较两个指纹...假设C想改A发给B的数据来欺骗B,因为篡改数据后指纹会变,要想跟A的签名里面的指纹一致,就得改签名,但由于没有A的私钥,所以改不了,如果C用自己的私钥生成一个新的签名,B收到数据后用A的公钥根本就解不开...实际上,数字证书就是经过CA认证过的公钥,除了公钥,还有其他的信息,比如Email,国家,城市,域名等。
非对称加密:即两端使用一对不同的密钥进行加密。 在非对称加密中,需要两对密钥,公钥和私钥。 公钥个私钥属于对立关系,一把加密后,只有另一把才可以进行解密。...具体RSA加密算法在计算机网络中的运用方式和原理可以查看:OpenSSL - 网络安全之数据加密和数字证书 如何利用openssl命令行来生成证书和密钥可查看:OpenSSL - 利用OpenSSL自签证书和...在使用OpenSSL进行RSA加密算法时,流程与上述理论流程保持一致。...生成密钥或读取密钥 根据需要选择签名还是加密 使用公钥进行数据加密 使用私钥进行数字签名 数据通过网络进行安全传输 对端进行解密获取明文 下面是OpenSSL的RSA加密算法对数据进行加密解密过程实现...从证书中提取公钥加密与上述代码类似,替换相应API即可。 tips:本来把这篇OpenSSL的RSA加密算法和代码写好点的,但是由于最近时间越来越紧张。后续有机会在扩充吧。
前面在公钥密码体制中说到的公钥、私钥就是密钥,公钥是加密使用的密钥,私钥是解密使用的密钥。...1.4、RSA简介 RSA是一种公钥密码体制,现在使用得很广泛。如果对RSA本身有兴趣的,后面看我有没有时间写个RSA的具体介绍。...由于是使用RSA这种公钥密码体制,“服务器”需要对外发布公钥(算法不需要公布,RSA的算法大家都知道),自己留着私钥。“客户”通过某些途径拿到了“服务器”发布的公钥,客户并不知道私钥。...其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上...,然后使用这个指纹算法计算"ABC Company"证书的指纹,将这个计算的指纹与放在证书中的指纹对比,如果一致,说明"ABC Company"的证书肯定没有被修改过并且证书是"SecureTrust
公钥、私钥和证书 除算法外,非对称加密中另外两个重要的概念是公钥和私钥。公钥对外公开,任何人均可持有和使用;私钥自行保管,其安全性是通信安危的关键。...私钥和公钥的作用一般分为两种: 公钥加密,私钥解密,主要用于通信; 私钥加密(签名),公钥解密(验证),主要用于数字签名。...证书包含公钥,所以拿到证书意味着就拿到了对方的公钥。几乎所有的浏览器都会对证书进行校验,以确保网页通信中的安全。...CURL 等第三方库一般不会对证书进行检查,那么与服务器交互时如何确保通信的对方是真李逵而非李鬼?...CSR(Certificate Sign Request)、公钥、密钥和证书归属为一类。CSR 用来获取证书,包含申请人的公钥、邮件等证明身份的信息。
在做美多商城三方支付业务时,需要连入支付宝支付接口,众所周知,支付宝支付采用了RSA加密签名的安全通信机制,开发者可以通过支付宝的公钥验证消息的来源,同时使用自己的私钥进行信息加密。...第二、使用发放的私钥对散列码进行加密生成签名。将报文和签名一同发出去。 第三、收方用和发放一样的散列函数对报文运算生成一个散列码,同时用发放的公钥对签名进行解密。 ...第四、如果收方计算得到的散列码和解密的签名一致,那么说明的确是发方对报文进行了签名而且报文在途中没有被篡改。 ...本文介绍如何在Mac下,生成支付宝要求的2048长度的RSA秘钥 1 使用之前介绍过的Homebrew安装openssl brew install openssl 2 在命令行敲openssl...-pubout -out rsa_public_key.pem #生成公钥 OpenSSL> exit #退出OpenSSL程序 这样就在当前目录生成了两个文件rsa_private_key.pem
单向散列函数输出的散列值又称为消息摘要或者指纹 特点: 对任意长度的消息散列得到散列值是定长的 散列计算速度快,非常高效 消息不同,则散列值一定不同 消息相同,则散列值一定相同 具备单向性,无法逆推计算...-check 从私钥中提取公钥:$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout 以明文输出公钥内容:$ openssl...rsa -in public.pem -out public.txt -pubin -pubout -text 使用公钥加密小文件:$ openssl rsautl -encrypt -pubin -...msg.bin -out a.txt 将私钥转换成 DER 格式:$ openssl rsa -in private.pem -out private.der -outform der 将公钥转换成 DER...格式:$ openssl rsa -in public.pem -out public.der -pubin -outform der 非对称加密存在的安全问题 原理上看非对称加密非常安全,客户端用公钥进行加密
2、非对称加密 又称公钥加密。使用此种加密方式通讯方会通过算法生成成对存在的私钥和密钥,使用私钥加密的数据只能用自己的公钥解密,反之亦然。...因此可以以较为公开的方式将公钥传送给通讯对方,而对方可以通过是否能使用此公钥来解密相应的数据信息来验证通讯方的身份,完成网络通讯安装的身份验证。...3、单向加密 又称数据完整性校验加密方式,可以利用算法计算数据指纹信息,此种方式得出的数据指纹信息具有定长和雪崩效应(数据中的微小变化将会导致数据指纹信息的巨大变化)的特性,常用来实现数据完整性的验证...第三步,用户B收到服务器A发来的证书,使用与之同样的证书验证流程验证证书的合法性以及完整性,提取服务器A的公钥信息。...例: 提取公钥信息 openssl rsa -in /path/from/privat_keyfile [-out /path/to/pub_keyfile
我以前一直使用口令通过ssh协议登陆Linux服务器,最近公司要求使用公钥登陆。说是安全,好吧。那我们整一下。那到底使用公钥登陆服务器有什么好处呢?...选择“公钥”,然后点击右边的属性按钮,在对话框中。 image.png 使用全局公钥设置:表示所有连接都使用该公钥连接服务器。 使用会话公钥设置:可以分别为每个连接指定不同的公钥。...RSAAuthentication yes #默认为注释, 启用 RSA 认证 AuthorizedKeysFile .ssh/authorized_keys # 验证公钥的存放路径 PubkeyAuthentication...重点补充,如果还有其他人也想用自己的公钥登陆服务器,该如何操作呢? 正常操作应该为该用户在服务器上创建一个账号,重新执行本次(Linux服务器端配置,第2点)操作。...如果你设置了公钥口令,连接时比如输入。为了安全,这个口令是必须要有的。在SecureCRT中,口令被翻译为:通行短语。呵呵。 补充一下,在linux系统上,如何创建公钥和私钥呢?
领取专属 10元无门槛券
手把手带您无忧上云