base64

Base64

穿精又带淫゛_ 提交于 2020-03-31 14:18:57
一、编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节 数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前 补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是 3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在 结尾添加1到2个 “=”。 例:将对ABC进行BASE64编码: 1、首先取ABC对应的ASCII码值。A(65)B(66)C(67); 2、再取二进制值A(01000001)B(01000010)C(01000011); 3、然后把这三个字节的二进制码接起来(010000010100001001000011); 4、 再以6位为单位分成4个数据块,并在最高位填充两个0后形成4个字节的编码后的值,(00010000)(00010100 )(00001001)(00000011),其中蓝色部分为真实数据; 5、再把这四个字节数据转化成10进制数得(16)(20)(9)(3); 6、最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D),这里的值实际就是 数据在字符表中的索引。 注:BASE64字符表

尝试用kotlin做一个app(十七)

五迷三道 提交于 2020-03-31 04:45:32
帖子详情页 客户端请求url,服务器返回数据。主要是怎么把帖子内容中的图片显示出来 我之前把内容中的图片存储为base64编码 var startMark="<img src='data:image/jpeg;base64," var endMark="'/>" if(!content.contains(startMark)) { post_content.text=content }else{ var preStart=0 var start=0 var spanString:SpannableStringBuilder= SpannableStringBuilder() var res="" spanString?.append(content) while(true){ start=content.indexOf(startMark,preStart) var end=content.indexOf(endMark,start) // println(content) if(start!=-1&&end!=-1){ var imgStart=start+startMark.length var base64Url=content.substring(imgStart,end) //println(base64Url) var byteData= Base64.decode

4GB以上超大文件上传和断点续传服务器的源码

不羁岁月 提交于 2020-03-30 16:23:09
最近遇见一个需要上传超大大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据、上传影音文件等。如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成。 下面从文件上传方式入手,整理大文件上传的思路,并给出了相关实例代码,由于PHP内置了比较方便的文件拆分和拼接方法,因此服务端代码使用PHP进行示例编写。 本文相关示例代码位于github上,主要参考 聊聊大文件上传 大文件切割上传 文件上传的几种方式 首先我们来看看文件上传的几种方式。 普通表单上传 使用PHP来展示常规的表单上传是一个不错的选择。首先构建文件上传的表单,并指定表单的提交内容类型为enctype="multipart/form-data",表明表单需要上传二进制数据。 然后编写index.php上传文件接收代码,使用move_uploaded_file方法即可(php大法好…) form表单上传大文件时,很容易遇见服务器超时的问题。通过xhr,前端也可以进行异步上传文件的操作,一般由两个思路。 文件编码上传 第一个思路是将文件进行编码,然后在服务端进行解码,之前写过一篇在前端实现图片压缩上传的博客

web验证码的异步刷新实现

梦想的初衷 提交于 2020-03-29 03:58:40
接上回,上次和大家简单的介绍了下web验证码实现,也说了异步刷新验证码的实现逻辑,不过有些小伙伴还是建议我实现下,废话少说,上代码: 此代码是需要依赖: sanic==19.9.0 Pillow==7.0.0 import random import string import uuid import base64 import platform from PIL import Image, ImageDraw,ImageFont from io import BytesIO from sanic import Sanic from sanic.response import HTTPResponse,text, json from sanic.views import HTTPMethodView app = Sanic() session = {} class VerifyCode: def __init__(self, numbers:int): """ 指定:生成的数量 """ self.number = numbers def draw_lines(self, draw, num, width, height): """划线""" x1 = random.randint(0, width / 2) y1 = random.randint(0, height / 2) x2

RSA加密算法

匆匆过客 提交于 2020-03-28 02:39:20
RSA加密算法(Java实现) 注: 本博客并非原创,参考 https://leanote.zzzmh.cn/blog/post/5d1c661416199b0683002dc8 之前在公司实习的时候,进行前后端数据交互,采用明文传输的方式显然不够安全,综合网上的资料选择了 RSA 这种非对称加密算法,也是时下应用最广泛的加密算法之一,这里主要做一个记录,代码主要参考上面那篇博客的,特此感谢。 RSA加密算法 RSA非对称加密算法,加密和解密需使用不同的密钥,这在一定程度上就加大了破解的难度,公钥放在前端进行数据加密,服务端收到密文再利用密钥进行解密。 RSA的安全性依赖于大数的因子分解,这本身在数学中就是一大难题,一般密钥长度为 1024 位已经极难破解了,下面附上一张百度百科的照片。 这里只做一下简单的记录,以后有时间还需要好好研究研究。 代码实现 import java.util.Base64; import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java

[转]Base64 算法原理,以及编码、解码【加密、解密】 介绍

独自空忆成欢 提交于 2020-03-27 20:15:13
Base64编码,是我们程序开发中经常使用到的编码方法。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用作电子邮件标准)中一种可打印字符表示二进制数据的常见编码方法!它其实只是定义用可打印字符传输内容一种方法,并不会产生新的字符集!有时候,我们学习转换的思路后,我们其实也可以结合自己的实际需要,构造一些自己接口定义编码方式。好了,我们一起看看,它的转换思路吧! Base64实现转换原理 它是用64个可打印字符表示二进制所有数据方法。由于2的6次方等于64,所以可以用每6个位元为一个单元,对应某个可打印字符。我们知道三个字节有24个位元,就可以刚好对应于4个Base64单元,即3个字节需要用4个Base64的可打印字符来表示。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中一般有所不同。但是,我们经常所说的Base64另外2个字符是:“+/”。这64个字符,所对应表如下。 编号 字符 编号 字符 编号 字符 编号 字符 0 A 16 Q 32 g 48 w 1 B 17 R 33 h 49 x 2 C 18 S 34 i 50 y 3 D 19 T 35 j 51 z 4 E 20 U 36 k 52 0 5 F 21

phpyun人才管理系统V5.0 SQL注入漏洞分析

微笑、不失礼 提交于 2020-03-26 15:01:07
*世界上最愚蠢的事莫过于我们无比狂热地做一件事,到最后却不知道为什么要做* cms背景介绍 PHP云人才管理系统(phpyun)是国内主流人才管理CMS系统之一!PHP云专为中文用户设计和开发,采用:B/S+c/s技术框架,程序源代码100%完全开放!基于PHP 和 MySQL 数据库构建的为核心开发。 漏洞类型 前台SQL盲注 漏洞描述 Phpyun最新版本V5.0中,在用户邮箱认证处,存在SQL延时注入。其未对 base64解密后的email参数进行任何过滤,从而导致漏洞产生。 漏洞产生链分析: 漏洞产生点位于 app\controller\qqconnect\index.class.php的cert_action函数 可以看到此函数开头将GET取得的结果经过base64_decode函数解码后分割引入 $arr数组中,此时可以绕过全局过滤,代表此处可以控制$arr[3]的值。再往下看: 此时可以看到,由于$arr[3]的值可控,所以导致$data的 email参数可控,并且引入upCertInfo函数的email参数可控。在跟进 upCertInfo函数: 可以看到在此函数中$data以及$whereData参数未经任何过滤又将其引入 upCertEmail函数,继续跟进: 可以看到此函数同样未对data数组中的参数未经过任何过滤,此时$email变量可控并将其引入

step by step教你常用JS方法封装(一) [ 大杂烩 ]

…衆ロ難τιáo~ 提交于 2020-03-26 08:48:36
3 月,跳不动了?>>> 本文参考原文- http://bjbsair.com/2020-03-25/tech-info/6338/ 持续更新中... 常用JS方法封装方法预告: 项目常用JS方法封装(二) [ 时间处理 ] 项目常用JS方法封装(三) [ 字符串相关处理 ] 项目常用JS方法封装(四) [ 数组相关处理 ] 使用方法非常简单,只需放到你的 utils.js 工具文件中,直接 export const 加上我的封装方法,在别的文件中使用{方法1,方法2,方法3...}引用后就可以直接使用了! 001.输入一个值,返回其数据类型 type = para => { return Object.prototype.toString.call(para).slice(8,-1) } 复制代码 002.阶乘 factorial = num => { let count = 1; for (let i = 1; i <= num; i++) { count *= i; } return count; } 复制代码 003.两个数之间累乘 multBetride = (x, y) => { let count; if (x < y) { count = x; for (let i = x + 1; i <= y; i++) { count *= i; } return count

Aes_ECB+bash64 加密

我们两清 提交于 2020-03-25 20:23:37
Aes_ECB+bash64 加密 import base64 from Crypto.Cipher import AES from Crypto.Random import get_random_bytes from Crypto import Random import binascii class Aes_ECB(object): def __init__(self, key): self.key = key self.MODE = AES.MODE_ECB self.BS = AES.block_size self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS) self.unpad = lambda s: s[0:-ord(s[-1])] # str不是16的倍数那就补足为16的倍数 def add_to_16(value): while len(value) % 16 != 0: value += '\0' return str.encode(value) # 返回bytes def AES_encrypt(self, text): aes = AES.new(Aes_ECB.add_to_16(self.key), self.MODE) #

Will base64 encoded value exceed 65,535 characters

对着背影说爱祢 提交于 2020-03-25 16:19:39
问题 I am planning to convert pdf files to base64 encoded and save them in the database. My DB column is text type. Will base64 encoded value exceed 65,535 characters if pdf file is big? 回答1: Base64 encoding maps the input bytes (8 Bit) to a 6 bit representation. That means, with a 4 character string in base64 encoding, you can encode 4 * 6 = 24 bits, which equals 3 byte of the unencoded original input. Therefore the result of the encoding will be 33% bigger than the input. And base64 encoding has