加密与解密

13种加密与解密算法【四】

元气小坏坏 提交于 2020-04-04 20:30:39
【10、散列哈希之SHA1加密】 SHA1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。 SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。 **【SHA-1和SHA-0】 SHA-1和SHA-0的算法只在压缩函数的消息转换部分差了一个比特的循环位移。 【散列之SHA1】 /** * SHA1 * @param inStr 需要摘要的内容 * @return */ public static String sha1Encode(String inStr) { MessageDigest sha = null; try { sha = MessageDigest.getInstance("SHA"); byte[] byteArray = inStr.getBytes("UTF-8"); byte[] md5Bytes = sha.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++) { int val = ((int)

13种加密与解密算法【一】

二次信任 提交于 2020-04-04 12:57:47
这15种加密解密算法分别是:散列哈希[MD5、SHA1、CRC32],对称[DES,3DES(TDEA、Triple DES),AES、,Blowfish,RC4、RC5,IDEA],Base64、Rabbit、Escape。 【三种分类】 1、对称加密:密钥只有一个,解密、解密都是这个密码,加解密速度快,典型的对称加密有DES、AES、RC4等 2、非对称加密:密钥成对出现,分别为公钥和私钥,从公钥无法推知私钥,反之,从私钥也无法推知公钥,加密和解密使用不同的密钥,公钥加密需要私钥解密,反之,私钥加密需要公钥解密。非对称加密速度较慢,典型的非对称算法有:RSA,DSA,DSS. 3、Hash算法,这是一种不可逆的算法,它常用于验证数据的完整性。 【1、MD5加密解密】 md5是不可逆的,md5没有解密的方法,最好的反驳就是:数据源是无穷尽的,而 MD5密文是有限的。这里的加密解密是对md5算法先加密后解密,而不是对md5解密。 md5加密原理 MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 // MD5加密,32位 public static String MD5(String str) { MessageDigest md5 = null;

13种加密与解密算法【三】

♀尐吖头ヾ 提交于 2020-04-04 12:56:20
【7、对称之BlowFish】 blowfish加密函数迭代执行16轮,分组长度64位,密钥长度从32位到448位。 算法由两部分组成,密钥扩展部分和数据加密部分。 加密算法是一种对称的分组加密算法,每次加密一个64位的分组。使用32-448位可变长度的密钥。加密过程分为两个阶段:密钥预处理和信息加密。 【对称之 blowfish demo】 略! 【8、对称之RC4】 RC4于1987年提出,和DES算法一样,是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。但不同于DES的是,RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密。 RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特)。 【对称之RC4 小demo】 【RC4 加密】 /** * RC4加密 * @param data 需要加密的内容 * @param key 自定义密钥 * @return 加密后的内容 */ public static String encry_RC4_string(String data, String key) { if (data == null || key == null) { return null; } return toHexString

Python 的AES加密与解密

不想你离开。 提交于 2020-03-28 02:46:38
AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows 下使用AES时要安装的是pycryptodome 模块 pip install pycryptodome python 在 Linux 下使用AES时要安装的是pycrypto模块 pip install pycrypto CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量) ECB加密不需要iv AES CBC 加密的python实现 1 from Crypto.Cipher import AES 2 from binascii import b2a_hex, a2b_hex 3 4 5 # 如果text不足16位的倍数就用空格补足为16位 6 def add_to_16(text): 7 if len(text.encode('utf-8')) % 16: 8 add = 16 - (len(text.encode('utf-8')) % 16) 9 else: 10 add = 0 11 text = text + ('\0' * add) 12 return text.encode('utf-8') 13 14 15 # 加密函数 16 def encrypt(text)

学汇编有感

≡放荡痞女 提交于 2020-03-17 08:11:31
这几天一直在学习王爽的那本汇编语言,书算是基本上看完了,这本书的确是很适合学汇编的新手。 我学汇编的主要目的是想更深入的学习windows和编写更好的软件,所以我在一边学习《汇编语言》一边学习看雪老大出的那本经典的《加密与解密》。 《汇编语言》学完了后再看那本厚厚的《加密与解密》就基本上能看懂了(当然了,如果你也看的话还要学点c语言) 来源: https://www.cnblogs.com/onroad/archive/2009/07/13/1522699.html

加密与解密学习笔记3-Windows与Unicode

前提是你 提交于 2020-02-11 18:36:50
windows 9x几乎都是使用ANSI字符串来进行所有内部操作。但也有少量函数支持Unicode的能力。 Win9x_Unicode.exe例子 #include <windows.h> #include <tchar.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdline, int iCmdShow) { MessageBox(NULL, TEXT("Windows 9x支持Unicode?"), TEXT("Hello"), 0); return 0; } 运行结果: 反汇编工具(W32Dasm)查看代码 :00411690 6A00 push 00000000 :00411692 68306B4100 push 00416B30 :00411697 68406B4100 push 00416B40 :0041169C 6A00 push 00000000 * Reference To: USER32.MessageBoxW, Ord:024Dh | :0041169E FF1598A04100 Call dword ptr [0041A098] :004116A4 3BF4 cmp esi, esp :004116A6 E859FAFFFF call

加密与解密(C++字符串练习题)

僤鯓⒐⒋嵵緔 提交于 2020-01-30 12:07:42
【问题描述】 一个长度为n(1=<n<=1000)的字符串s(原文,可能包括空格)可以通过以下算法进行加密 a). 按递减顺序迭代n的所有因子,也就是从n到1 b). 对于每个因子d,反转字符串s的前d个字符s[0,…,d-1],从而形成新的s 给定一个已加密的字符串t(密文),你的任务是找出原始字符串s(原文),输入保证字符串s是存在且唯一的。 【输入形式】 输入为一行一个字符串t,表示密文 【输出形式】 输出原文字符串s 【样例输入】 owrldolleh 【样例输出】 helloworld 【样例说明】 原文s “helloworld” 长度为10,其因子依次为10,5,2,1 第一次变换反序前10个字符:“dlrowolleh” 第二次变换反序前5个字符:“worldolleh” 第三次变换反序前2个字符:“owrldolleh” 第四次变换反序前1个字符:“owrldolleh” 密文为"owrldolleh" 注意,最后的反转操作不改变字符串,因为d=1。 【示例代码】 # include <iostream> //#include<stdio.h> # include <cstring> using namespace std ; int main ( ) { char a [ 1000 ] ; //gets(a); cin . get ( a , 1000 ) ;

Python 的AES加密与解密

回眸只為那壹抹淺笑 提交于 2020-01-23 18:24:48
Python 的AES加密与解密 AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows 下使用AES时要安装的是pycryptodome 模块 pip install pycryptodome python 在 Linux 下使用AES时要安装的是pycrypto模块 pip install pycrypto CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量) ECB加密不需要iv AES CBC 加密的python实现 1 from Crypto.Cipher import AES 2 from binascii import b2a_hex, a2b_hex 3 4 5 # 如果text不足16位的倍数就用空格补足为16位 6 def add_to_16(text): 7 if len(text.encode('utf-8')) % 16: 8 add = 16 - (len(text.encode('utf-8')) % 16) 9 else: 10 add = 0 11 text = text + ('\0' * add) 12 return text.encode('utf-8') 13 14 15 # 加密函数 16

栅栏密码加密与解密以及特征

…衆ロ難τιáo~ 提交于 2020-01-14 02:14:06
原理描述: 所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话) 加密特征: 总体来说字母内容不变,仅是字母顺序被“打乱”;加密的时候要选择组数,所以解密的话只能逆推所有组数,然后选择一个适合的 脚本实现: 在线网址:https://www.qqxiuzi.cn/bianma/zhalanmima.php 代码来源于:https://blog.csdn.net/qq_41420747/article/details/88599774 # 栅栏密码加密解密 # @ChenYe def crypto ( ) : plain = input ( '输入明文:' ) n = int ( input ( '输入每组字数' ) ) ans = '' for i in range ( n ) : for j in range ( int ( plain . __len__ ( ) / n + 0.5 ) ) : try : ans += plain [ j * n + i ] except : pass return ans def decrypto ( ) : plain = input ( '输入密文:' ) for n in range ( 2 ,

AES中ECB模式的加密与解密(Python3.7)

痞子三分冷 提交于 2020-01-13 14:04:32
本文主要解决的问题 本文主要是讲解AES加密算法中的ECB模式的加密解密的Python3.7实现。具体AES加密算法的原理这里不做过多介绍,想了解的可以参考文末的参考链接。 主要解决了两个问题: 在Python3.7版本下,所依赖包的安装问题 。(有一些博客时间久远,其中所提到的模块并不适用于Python3.7) 因为Python版本的问题,其他博客在基于Python3.6下的代码在Python3.7下并不能运行的问题 。 背景介绍 在爬虫项目中遇到,某些网站的账号、密码采用了AES的ECB模式进行了加密。 # 加密前的数据 123456asd # 加密后的数据 3cfeba82c31b6635e8fb085e04529e74 # 密钥 8NONwyJtHesysWpM 使用 在线AES加密解密、AES在线加密解密 ,进行尝试。 经过测试发现,在 AES 加密的 ECB模式 ,填充为 pkcs7padding ,数据块为 128位 ,输出格式为 hex 时,得到自己想要的结果。 (这里可以可以根据密文的格式进行判断输出的格式, 一般密文以==结尾的输出格式为base64 ,否则为hex格式) 问题1:Crypto模块安装报错 pip 安装 pycrypto模块,抛如下错误: error: command 'C:\\Program Files (x86)\\Microsoft