rsa算法

RSA算法详解及C语言实现

匿名 (未验证) 提交于 2019-12-03 00:22:01
1、 什么是RSA RSA公钥加密算法是1977年由罗纳德・李维斯特(Ron Rivest)、阿迪・萨莫尔(Adi Shamir)和伦纳德・阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。 RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。 RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加密和解密使用同一种密钥的方式 公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。 2. RSA加密 RSA的加密过程可以使用一个通式来表达 密文= 明 文 E 明 文 E mod N

RSA算法的分段加密

匿名 (未验证) 提交于 2019-12-03 00:19:01
一.rsa算法介绍: 百度百科 二.首先通过rsa算法生成一对公私钥 private static void generateKeyPair() throws Exception{ Security.addProvider(new com.sun.crypto.provider.SunJCE()); /** RSA算法要求有一个可信任的随机数源 */ SecureRandom sr = new SecureRandom(); /** 为RSA算法创建一个KeyPairGenerator对象 */ KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); /** 利用上面的随机数据源初始化这个KeyPairGenerator对象 */ kpg.initialize(4096, sr); /** 生成密匙对 */ KeyPair kp = kpg.generateKeyPair(); /** 得到公钥 */ Key publicKey = kp.getPublic(); /** 得到私钥 */ Key privateKey = kp.getPrivate(); /** 用对象流将生成的密钥写入文件 */ ObjectOutputStream oos1 = new ObjectOutputStream(new

RSA算法的分段加密

匿名 (未验证) 提交于 2019-12-03 00:18:01
一.rsa算法介绍: 百度百科 二.首先通过rsa算法生成一对公私钥 private static void generateKeyPair() throws Exception{ Security.addProvider(new com.sun.crypto.provider.SunJCE()); /** RSA算法要求有一个可信任的随机数源 */ SecureRandom sr = new SecureRandom(); /** 为RSA算法创建一个KeyPairGenerator对象 */ KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); /** 利用上面的随机数据源初始化这个KeyPairGenerator对象 */ kpg.initialize(4096, sr); /** 生成密匙对 */ KeyPair kp = kpg.generateKeyPair(); /** 得到公钥 */ Key publicKey = kp.getPublic(); /** 得到私钥 */ Key privateKey = kp.getPrivate(); /** 用对象流将生成的密钥写入文件 */ ObjectOutputStream oos1 = new ObjectOutputStream(new

777 支付宝支付

烈酒焚心 提交于 2019-12-02 06:12:39
SDK : ali支付的算法 github中有 简单逻辑往上放 复杂逻辑,放下面,有时间再看 公钥私钥 加密生成url 支付成功通知 sign校验 修改订单状态 该view免除csrf token settings必须大写 公钥私钥 rsa加密 来源: https://www.cnblogs.com/venicid/p/11733936.html

学习笔记之RSA算法原理与应用

折月煮酒 提交于 2019-12-02 05:15:41
工作中遇到SSH的时候实在多,关于密钥分发也是重要的任务。那公钥和私钥是怎么产生的,RSA算法原理是什么?强迫症患者当然不满足仅仅是what and how,自然要知道why。华章译丛的数学专著我向来喜欢,那本《初等数论及应用(原书第六版)》就成了我接下来要面对的任务。 然后做了读书笔记,方便以后复习理解。我实在没有时间手打文字贴上来,只好就着图片放出来了. 既然知道密钥对的原理,下面来梳理一下它的应用。 一.使用RSA算法的步骤: 1.接收方生成一个公钥+私钥的密钥对; 2.私钥由接收方妥善保管,公钥发给发送方(宇宙众生皆可盗取); 3.发送方用收到的公钥对发送信息进行加密形成密文,然后发给接收方; 4.接收方收到密文后,用司机的私钥解密成明文。 二.使用消息认证码的步骤: 1.发送方与接收方事先共享会话密钥(万万不可公开); 2.发送者使用共享密码对消息计算MAC值(将密钥和数据同时作为输出); 3.发送方将消息和MAC值一起发给接收方; 4.接收方收到消息后使用共享密钥计算消息的MAC值,与收到的MAC值对比; 5.若2个MAC值一致,则认为消息来源正确且未经篡改。 三.数字签名的使用步骤: 数字签名不是为了保证消息机密性,主要是为了识别篡改和伪装,可以复制且有效。 1.发送者产生密钥对(此处不再是接收者),私钥给自己,公钥给接收者,保证公钥来自真正的发送方是至关重要的环节;

公开密钥算法-RSA算法

删除回忆录丶 提交于 2019-12-02 02:26:55
明文x=200412 p=499, q=929 (p,q是素数) n = p×q = 499×929 =463571 φ(n) = (p-1)(q-1) = (499-1) (929-1) = 462144 取a=255157, b=9949 (ab mod φ(n)=1, 255157×9949=462144×5493+1) 加密: 密文y=x b mod n=200412 9949 mod 463571=418883 解密: 密文x=y a mod n=418883 255157 mod 463517=200412 来源: https://www.cnblogs.com/holaworld/p/11725834.html

使用ssh-keygen生成私钥和公钥

穿精又带淫゛_ 提交于 2019-12-01 12:26:18
1.使用ssh-keygen生成私钥和公钥 命令如下: ssh-keygen -t rsa 例子: fdipzone@ubuntu:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/fdipzone/.ssh/id_rsa): 这里输入要生成的文件名 Enter passphrase (empty for no passphrase): 这里输入密码 Enter same passphrase again: 这里重复输入密码 Your identification has been saved in /home/fdipzone/.ssh/id_rsa. Your public key has been saved in /home/fdipzone/.ssh/id_rsa.pub. The key fingerprint is: f2:76:c3:6b:26:10:14:fc:43:e0:0c:4d:51:c9:a2:b0 fdipzone@ubuntu The key's randomart image is: +--[ RSA 2048]----+ | .+=*.. | | . += + | | o oo+ | | E

javaweb项目使用RSA算法

陌路散爱 提交于 2019-12-01 07:42:59
1. RSA 算法介绍 RSA 算法是一种非对称算法,即是加密的密码和解密的密码是不一致的。因此对 RSA 的加密和加密的密码分为公钥和私钥。根据 RSA 的算法介绍,只要密钥的长度足够长,现在没有任何方法可以破解。而且这个算法的专利已经在 2000 年 9 月 21 日失效,因此应该是可以任意使用的。 密钥获取: 选用 PKCS#8 生成密钥,选 PKCS#1 可能会导致解密失败 http://web.chacuo.net/netrsakeypair 1. javaweb 使用 RSA 1.1. 前端加密 要在前端加密密码,就要使用到jsencrypt 的 js 1.1.1. jsencrypt 下载 官网: http://travistidwell.com/jsencrypt/ github: https://github.com/travist/jsencrypt/releases 在 bin 目录下面可以找到相关 js : 1.1.2. 代码示例 1 //RSA加密 2 function encryptRequest(reqUrl, data) { 3 var publicKey = "****"; 4 var encrypt = new JSEncrypt(); 5 encrypt.setPublicKey(publicKey); 6 // ajax请求发送的数据对象 7

信风

醉酒当歌 提交于 2019-12-01 00:20:42
| 分类 linux | OpenSSH与SSH协议是远程登录的首选连接工具。它加密所有流量,以消除窃听,连接劫持和其它攻击。OpenSSH常常被误认以为与OpenSSL有关系,但实际上这两个项目的有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。 OpenSSH的套件包括以下工具: 远程操作使用 SSH, SCP,和 SFTP。 密钥管理 ssh-add, ssh-keysign, ssh-keyscan和ssh-keygen 服务端组成 sshd, SFTP服务器和 ssh-agent。 OpenSSH的功能: 具有完全的开源项目 OpenSSH的源代码是免费提供给通过互联网大家。这鼓励代码重用和代码审核。代码审查,以确保该漏洞可以被发现和被任何人纠正。这导致的安全密码。OpenSSH的不受任何限制的许可证。它可以用于任何和所有目的,并且明确包括商业用途。 该许可证包括在分布。我们觉得这个世界会更好,如果路由器,网络设备,操作系统,和所有其他的网络设备已经SSH集成到他们。限制性性质(即专利)的所有成分被从源代码移除。任何许可或专利的组件从外部库(如选择 LibreSSL)。 强大的加密(AES,ChaCha20,RSA,ECDSA,Ed25519 …) 加密身份验证之前启动,没有密码或其他信息以明文传输

Linux笔记 SSH服务

早过忘川 提交于 2019-11-28 22:28:44
一、概要 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用 SSH 协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。 在默认状态下,SSH服务主要提供两个服务功能:   提供类似telnet远程联机服务器的服务,即上面提到的 SSH服务 。   类似FTP服务的sftp-server,借助SSH协议来传输数据的。提供更安全的 SFTP服务 (vsftp,proftp)。 二、认证过程 1.认证分类与说明 >>>主机验证: 通过主机验证,再通过该主机上的用户验证,就能唯一确定该用户的身份;一个主机上可以有很多用户,所以每台主机的验证只需一次,但主机上每个用户都需要单独进行用户验证; >>>身份验证: 一个主机上可以有很多用户,所以每台主机的验证只需一次,但主机上每个用户都需要单独进行用户验证   常用身份验证方法:ssh支持多种身份验证,最常用的是 密码验证机制和公钥认证机制