hex

python常见的加密方式

你离开我真会死。 提交于 2020-11-24 03:32:38
1.前言 我们所说的加密方式都是对二进制编码的格式进行加密,对应到python中,则是我妈们的bytes. 所以当我们在Python中进行加密操作的时候,要确保我们的操作是bytes,否则就会报错. 将字符串和bytes互相转换可以用encode()和decode()方法,如下所示: 注:两位十六进制常常用来显示一个二进制字节. 利用binascii模块可以将十六进制显示的字节转换成我们在加密中更加常用的显示方式: In [1]: import binascii In [ 2]: " 你好 " .encode() Out[ 2]: b ' \xe4\xbd\xa0\xe5\xa5\xbd ' In [ 3]: binascii.b2a_hex( " 你好 " .encode()) Out[ 3]: b ' e4bda0e5a5bd ' In [ 4]: binascii.a2b_hex( b ' e4bda0e5a5bd ' ) Out[ 4]: b ' \xe4\xbd\xa0\xe5\xa5\xbd ' In [ 5]: binascii.a2b_hex( b ' e4bda0e5a5bd ' ).decode() Out[ 5]: ' 你好 ' 2.URL编码 正常的URL中是只能包含ASCII字符的,也就是字符,数字和一些符号

Java 常见摘要算法——md5、sha1、sha256

不想你离开。 提交于 2020-11-22 06:56:24
目录 摘要算法简介 md5 使用jdk内置方法实现md5加密 使用bc方式实现md5加密 使用cc方式实现md5加密 sha1 使用jdk内置方法实现sha1加密 使用bc方式实现sha1加密 使用cc方式实现sha1加密 实现sha256的代码和sha1的代码相似 摘要算法简介   摘要算法,也是加密算法的一种,还有另外一种叫法:指纹。摘要算法就是对指定的数据进行一系列的计算,然后得出一个串内容,该内容就是该数据的摘要。不同的数据产生的摘要是不同的,所以,可以用它来进行一些数据加密的工作:通过对比两个数据加密后的摘要是否相同,来判断这两个数据是否相同。   还可以用来保证数据的完整性,常见的软件在发布之后,会同时发布软件的md5和sha值,这个md5和sha值就是软件的摘要。当用户将软件下载之后,然后去计算软件的摘要,如果计算所得的摘要和软件发布方提供的摘要相同,则证明下载的软件和发布的软件一模一样,否则,就是下载过程中数据(软件)被篡改了。   常见的摘要算法包括:md、sha这两类。md包括md2、md4、md5;sha包括sha1、sha224、sha256、sha384、sha512。 md5   md摘要算法包括多种算法:分别是md2、md4、md5。现在一般都是使用md5进行加密。   Java中实现md5加密,有三种方式:   使用jdk内置的方法实现实现md5加密

Asis CTF 2016——b00ks

瘦欲@ 提交于 2020-11-21 04:29:44
这程序是一个图书管理系统   #off-by-one 程序逻辑 1 __int64 __fastcall main(__int64 a1, char **a2, char ** a3) 2 { 3 struct _IO_FILE *v3; // rdi 4 __int64 savedregs; // [rsp+20h] [rbp+0h] 5 6 setvbuf(stdout, 0LL, 2 , 0LL); 7 v3 = stdin; 8 setvbuf(stdin, 0LL, 1 , 0LL); 9 hello(); 10 input_name(); 11 while ( (unsigned int )sub_A89(v3) != 6 ) 12 { 13 switch ( (unsigned int )& savedregs ) 14 { 15 case 1u : 16 create(v3); 17 break ; 18 case 2u : 19 delete(v3); 20 break ; 21 case 3u : 22 edit(v3); 23 break ; 24 case 4u : 25 print(v3); 26 break ; 27 case 5u : 28 input_name(); 29 break ; 30 default : 31 v3 = ( struct

关于SQLite中文乱码的处理

六眼飞鱼酱① 提交于 2020-11-13 20:39:01
最近一个项目中,同事用的是C往SQLite写入的数据,保存中文时用的是双字节的ASCII码。而我的程序是用C#写的,一开始没注意到这个问题,所以读取中文一直乱码。 在C#中好像没有找到合适的函数可以直接将双字节的ASCII码转成中文,然后考虑是否通过反向的思路看看是否可以将字节码转回中文,首先是通过SQLite的hex()函数将中文数据直接按16进制串返回。 SELECT transaction_serial_number,card_number,update_time,deal_result,hex(customer_name) as customer_name, .... 然后再将数据16进制转回10进制,再转回中文 /// <summary> /// 将16进制串转10进制字节数组 /// </summary> /// <param name="input"></param> /// <returns></returns> public static byte[] HexStringToByteArray(string input) { input = input.Replace(" ", "").Trim().ToUpper(); byte[] buffer = new byte[input.Length / 2]; for (int i = 0; i < input

MySQL 在并发场景下会遇到的问题及解决方案~

柔情痞子 提交于 2020-11-12 16:45:31
来源:李平 www.cnblogs.com/leefreeman/p/8286550.html 1、背景 对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为了满足这一目标大多数数据库通过锁和事务机制来实现,MySQL数据库也不例外。尽管如此我们仍然会在业务开发过程中遇到各种各样的疑难问题,本文将以案例的方式演示常见的并发问题并分析解决思路。 2、表锁导致的慢查询的问题 首先我们看一个简单案例,根据ID查询一条用户信息: mysql> select * from user where id=6; 这个表的记录总数为3条,但却执行了13秒。 出现这种问题我们首先想到的是看看当前MySQL进程状态: 从进程上可以看出select语句是在等待一个表锁,那么这个表锁又是什么查询产生的呢?这个结果中并没有显示直接的关联关系,但我们可以推测多半是那条update语句产生的(因为进程中没有其他可疑的SQL),为了印证我们的猜测,先检查一下user表结构: 果然user表使用了MyISAM存储引擎,MyISAM在执行操作前会产生表锁,操作完成再自动解锁。如果操作是写操作,则表锁类型为写锁,如果操作是读操作则表锁类型为读锁。 正如和你理解的一样写锁将阻塞其他操作(包括读和写)

STM32嵌入式应用系统设计

依然范特西╮ 提交于 2020-11-11 10:23:34
STM32嵌入式应用系统设计 一. 可视化的代码跟踪调试 二、Proteus仿真运行stm32程序 三、使用Altium Designer软件绘制一个stm32最小系统的电路原理图、PCB图 一. 可视化的代码跟踪调试 安装C++的插件 vscode打开源码文件了并调试 点击最左边第四个好像虫子的图标 选择刚刚装好的c++插件 修改后的lanch.json { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version" : "0.2.0" , "configurations" : [ { "name" : "(gdb) Launch" , "type" : "cppdbg" , "request" : "launch" , "program" : "${workspaceFolder}/${fileBasenameNoExtension}.out" , "args" : [ ] , "stopAtEntry" : false , "cwd" : "$

Python学习笔记(二):字符串类型

跟風遠走 提交于 2020-11-11 04:44:13
在上一篇随笔( https://www.cnblogs.com/g-qiang/p/10448813.html )中,说到 Python 有六种标准数据类型,而数字类型和字符串类型又是其中基本的数据类型。上一篇随笔介绍了数字类型,这篇随笔介绍字符串类型。 全文结构如下: 一、编码方式 Python 的字符串类型使用了统一编码(Unicode编码)。统一编码几乎覆盖世界上所有的字符,包括英文字母、汉字、韩文等等。使用了统一编码,一个汉字和一个字母的存储空间、表达方式一致,很便于中文处理。 获取 Unicode 的方式是使用 ord(x) 函数,例如 a = ord("c"),则 a = 99;b = ord("中"),则 b = 20013; 获取 Unicode 对应的字符使用 chr(u) 函数,u 的取值范围是 0-1114111(0X10FFFF)。 二、表示方式 Python 的字符串表示有三种方式——单引号、双引号和三引号 其中,单引号和双引号只能表示单行的字符串,而三引号可以表示多行字符串,因此三引号又常用于注释。输出引号可以使用转义字符 ' \ '。 例如 a = 'c', b = "中国梦", c=''' 热爱 '学习’,坚持 \" 锻炼 \" ''' 三、字符串基本操作 索引 ——Python 提供正向递增和反向递减两种索引方式; 切片 ——Python