加密与解密

Node之加密与解密处理

[亡魂溺海] 提交于 2020-01-11 15:06:32
crypto模块概述 在Node.js中,使用OpenSSL类库作为其内部实现加密与解密处理的基础手段,这是因为目前OpenSSL已经成为了一个经过严格测试的可靠的加密与解密算法的实现工具。 在Node.js中,OpenSSL类库被封装在crypto模块中,因此开发者可以使用crypto模块来实现各种不同的加密与解密处理。例如,crypto模块中包含了类似MD5或SHA-1之类的散列算法。开发者也可以通过crypto模块来实现HMAC运算 [1]。在crypto模块中,提供了一些加密方法来实现数据的可靠加密。另外,在crypto模块中,也提供了一些利用HMAC运算来实现数字签名以及对数字签名进行验证的方 法。 查看Node.js中能够使用的所有加密算法 在crypto模块中,为每一种加密算法定义了一个类。可以使用getCiphers方法 来查看Node.js中能够使用的所有加密算法。 crypto.getCiphers() 查看Node.js中能够使用的所有散列算法 可以使用getHashes方法来查看在Node.js中能够使用的所有散列算法。 crypto.getHashes() 散列算法 散列(哈希)算法用来实现一些重要处理,例如,在允许对一段数据进行验证的前提下,将数据进行模糊化,或者为一大段数据提供一个验证码 在node中,为了使用散列算法

java AES 加密与解密

混江龙づ霸主 提交于 2020-01-04 03:39:24
package com . ss . util . secret ; import java.io.UnsupportedEncodingException ; import java.security.InvalidKeyException ; import java.security.NoSuchAlgorithmException ; import javax.crypto.BadPaddingException ; import javax.crypto.Cipher ; import javax.crypto.IllegalBlockSizeException ; import javax.crypto.KeyGenerator ; import javax.crypto.NoSuchPaddingException ; import javax.crypto.SecretKey ; import javax.crypto.spec.SecretKeySpec ; /** ** * AES128 算法,加密模式为ECB,填充模式为 pkcs7(实际就是pkcs5) * * */ public class AESUtils { /** * 加密 * * @param content 需要加密的内容 * @param key 加密密码 * @return */ public

字符串加密与解密的问题

自古美人都是妖i 提交于 2019-12-26 02:25:31
程序思想:输入一个字符串,把字符串里的每一个字符用charAt()的方法放入一个数组里,在数组里定义一个char类型的变量,把数组里的每一个值都赋给这个变量,加密就加上3,这样就能把ACS码值加3,自然就得到了答案,但是要为最后三个字母写三个if,让遇到xyz的时候退回abc。解密的过程类似。 源代码://20142984 chengchongjing import java.io.InputStream ; //凯撒密码 import java.util.Scanner; public class Secrect { public static void main(String[] args) { // TODO 自动生成的方法存 Scanner in = new Scanner (System. in ); System. out .println("请输入要进行的操作 1加密 2解密"); int n=in.nextInt(); if (n==1){ System. out .println("请输入要加密的字符串"); String str=in.next(); String jm=""; int key=3; for ( int i=0;i<str.length();i++) { char c=str.charAt(i); if (c>='a'&&c<='w'){ c+

Python使用base64加密与解密

∥☆過路亽.° 提交于 2019-12-22 06:43:19
import base64 # 输入字符串 ptr = ( 'Python使用base64加密与解密' ) . encode ( encoding = 'utf-8' ) # 加密 p = base64 . b64encode ( ptr ) # 将字节转换位字符串 pp = str ( p , encoding = 'utf-8' ) # 打印 print ( pp ) # 输出结果为:UHl0aG9u5L2/55SoYmFzZTY05Yqg5a+G5LiO6Kej5a+G # base64解密 Q = base64 . b64decode ( pp ) # 将字节转换位字符串 QQ = str ( Q , encoding = 'utf-8' ) # 打印 print ( QQ ) # 输出结果为:Python使用base64加密与解密 来源: CSDN 作者: Jacks-os火狐 链接: https://blog.csdn.net/jackos521627/article/details/103647951

题535、TinyURL 的加密与解密

你。 提交于 2019-12-09 23:14:29
一、题目 TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk. 要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密算法如何设计和运作是没有限制的,你只需要保证一个URL可以被加密成一个TinyURL,并且这个TinyURL可以用解密方法恢复成原本的URL。 1 二、思路 我的想法就是直接将简化过的地址和原来地址存储在Map中。 长变短,转换的时候先查询有没有,有就直接输出,没有就进行生成。 短边长的时候直接查询就行了。 生成的原理: 直接随机生成一串字符,代替原本的URL,字符串越长,容量就越大,生成之后查询是否重复了,重复就继续生成,没有就直接进行下一步。 转换思路不唯一。 三、代码 import java.util.HashMap; public class T0535 { public static void main(String[] args) { Codec codec = new Codec(); System.out.println( codec.encode("https://leetcode.com/problems/design

使用Python 模拟RSA 加密与解密

三世轮回 提交于 2019-12-09 03:45:29
一、关于 RSA具体原理请移步其他文章,本文主要使用Python 来模拟RSA 算法的实现过程 二、简要分析 在RSA算法中,存在以下几个参数: 1、大素数p、q 2、n = p *q 3、Phi_n = (p-q) * (q-1) 4、E = 0x10001 5、计算得到数d, 使得 e *d % phi_n = 1 6、明文:a 7、密文:b 其中,公钥对(p, e)以及RSA加密算法对公众开放,私钥对(q, d)由加密者自己保留。RSA加密过程为:发送者使用公钥对明文加密得到密文,接收者使用私钥可以解密;RSA签名过程为:发送者使用私钥对明文进行加密(签名),接受者使用公钥可以成功解密,则证明发送者确实是私钥的拥有者。 RSA加密实验基本流程: 一、选取两个大素数p、q,并计算得到n、phi_n 二、选取常用的e = 0x10001,方便将幂运算优化为左移,加快运算速度 三、计算d,使用了扩展欧几里得算法 四、输入明文a,将明文转化为可以用于计算的数字形式 五、对a使用快速幂取模,得到密文b,以16进制显示 RSA解密流程: 六、对b使用快速幂取模,得到明文a,以字符形式显示 三、Python 代码 文件Main.py 为加密解密主程序,methods.py 文件内定义了一些被调用的函数 # RSA Generate By SOOWIN # 2019/11/26 #

iOS 加密与解密

感情迁移 提交于 2019-12-06 02:21:25
iOS RSA的网络安全模型、iOS签名机制总结(登录、token安全、签名) 一.登录、登录保持(http请求) 登录机制大概可以分为一下三个阶段: 1. 登录验证:是指客户端提供用户名和密码,向服务器提出登录请求,服务器判断客户端是否可以登录并向客户端确认。 2. 登录保持:是指客户端登录后, 服务器能够分辨出已登录的客户端,并为其持续提供登录权限的服务器。 3. 登出:是指客户端主动退出登录状态。 第一种网络请求情况(安全级别:II) 一般的情况是这个样子的:一但用户登陆成功(单方面MD5加密:服务器加密则客户端不加密,客户端加密则明文传输),服务器为客户端分配 sessionID(也可以称为userID),当然有些服务器不但为客户端分配了userID还有可能会为用户提供token了(这个下面会做解释), 然后每次网络请求都将sessionID当做参数传递给服务器。 优点 能够保持用户登录状态、区分用户,相对于不返回任何信息的登录要安全了一些。 缺点 如果通过网络嗅探器(例如:青花瓷)可以获取到http链接,这样子服务器返回的sessionID便会被获取到,这样子依然会造成信息泄露,并且还能被伪造请求(浏览器请求)。 第二种网络请求情况 (安全级别:III) 第一种存在明显的安全隐患,但是目前市面上的好多app依然采用第一种方法去实现登录、网络请求

.net中加密与解密

主宰稳场 提交于 2019-12-05 06:54:23
.Net中的加密解密 引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全。本文将简单地介绍了加密解密的一些概念,以及相关的数字签名、证书,最后介绍了如何在.NET中对数据进行对称加密和解密。 加密和解密 说到加密,可能大家最熟悉的就是MD5了,记得几年前我刚开始接触Web编程的时候,研究的一个ASP论坛程序,它的用户密码就是采用的MD5进行加密。MD5实际上只是一种散列运算,或者可以称为单向的加密,即是说无法根据密文(加密后的数据),推导出明文(原数据)。而我们下面要说明的,是在加密后可以进行解密、还原数据的。对于欲进行加密的对象,有的人称为消息,有的人称为数据,有的人称为信息,为了避免混淆,在本文后面部分,我统一将其称为 消息 。那么加密是什么呢?加密是通过对消息进行编码,建立一种安全的交流方式,使得只有你和你所期望的接收者能够理解。 那么怎么样才能叫安全呢?消息在接收方和发送方进行安全传递,一般要满足下面三个要点: 消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)。 消息的接收方可以确定消息是由谁发送的(消息的接收方可以确定消息的发送方)。 消息的接收方可以确定消息在途中没有被篡改过(必须确认消息的完整性)。 加密通常分为两种方式:对称加密和非对称加密,接下来我们先看看对称加密。 对称加密

RSA加密与解密

拜拜、爱过 提交于 2019-12-05 02:18:21
数据信息安全对我们每个人都有很重要的意义,特别是一些敏感信息,可能一些类似于收货地址、手机号还没引起大家的注意。但是最直白的,银行卡、姓名、手机号、身份证号,如果这些信息被黑客拦截到,他就可以伪装成你,把你的钱都取走。那我们该怎么防止这样的事情发生?报文加密解密,加签验签。 我害怕什么 我害怕卡里的钱被别人取走 我害怕转账的时候,报文被黑客拦截到,篡改信息转到别人的账户。 我害怕我的敏感信息被有心人获取 做一笔游戏充值,半个小时就收到各种游戏广告,我并不能抵挡诱惑 我要做什么 交易报文不被篡改 防止报文被篡改,需要对报文进行验签操作。 敏感信息不被读取 防止报文被读取,则需要将敏感信息加密。 公钥和私钥 公钥和私钥,加密解密和加签验签。加解密用来保证数据安全,加签验签用来证明身份。 商户生成一对公私钥(商公,商私),商户会把公钥给银行;银行也会生成一对公私钥(银公,银私),银行会把公钥给商户。也就是说:商户有银行的公钥,自己的公钥和私钥。银行有商户的公钥,自己的公钥和私钥 加密解密保证数据安全: 商户使用自己公钥加密,银行没有商户私钥解不开报文,排除 商户使用自己的私钥加密,银行使用商户公钥解密。理论上可行,然而会出现这种情况,商户和银行1,2,3都使用相同的公私钥,那么自己私钥加密后发送给银行1的报文,被银行2截取到也可以被解密开,违背了我们加密的目的--保证数据安全,排除。

python中的AES加密与解密

放肆的年华 提交于 2019-12-04 17:43:29
AES简介 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。 AES算法为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 来源: https://www.cnblogs.com/lanston1/p/11875857.html