base64

解决IE10以下浏览器不能编码Base64字符的问题

天涯浪子 提交于 2020-01-19 16:52:39
一、问题描述   前几天发现写的js代码中用到的 window.btoa('mingwen'); 在IE10以下浏览器中报错,不支持此语法。 二、解决方法   要兼容IE9、IE8、IE7,我们可以专门针对这些浏览器再引入一段ployfill脚本或者一个JS文件即可。   也就是HTML中嵌入下面一段代码: <!--[if IE]> <script src="./base64-polyfill.js"></script> <![endif]-->    base64-polyfill.js 内容: (function(f) { 'use strict'; /* istanbul ignore else */ if (typeof exports === 'object' && exports != null && typeof exports.nodeType !== 'number') { module.exports = f (); } else if (typeof define === 'function' && define.amd != null) { define ([], f); } else { var base64 = f (); var global = typeof self !== 'undefined' ? self : $.global; if

java 常用加解密算法总结

谁都会走 提交于 2020-01-19 05:19:38
细心的开发会发现,我们在下载文件时,会带有密文,这是干嘛的呢,是用来校验下载的文件完整性和正确性,防止文件被篡改。 如下图: 加解密测试代码: package com; import java.io.File; import java.io.FileInputStream; import java.io.UnsupportedEncodingException; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.SecureRandom; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec

11、多种解决方法

梦想的初衷 提交于 2020-01-18 19:51:42
0x01、题目:多种解决方法 0x02、WP 1、右键链接,点击新建标签页打开链接,保存该压缩包附件 2、解压后,发现一个名为KEY.exe的可执行程序 ①、双击,没什么特别的,略过 ②、右键属性,详细信息,没什么特别的,略过 ③、记事本打开,发现了,这个是一张图片经过了base64的转换,我们解码即可 data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAAIUAAACFCAYAAAB12js8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAArZSURBVHhe7ZKBitxIFgTv/396Tx564G1UouicKg19hwPCDcrMJ9m7/7n45zfdxe5Z3sJ7prHbf9rXO3P4lLvYPctbeM80dvtP+3pnDp9yF7tneQvvmcZu/2lf78zhU+5i9yxv4T3T2O0/7eud68OT2H3LCft0l/ae9ZlTo+23pPvX7/rwJHbfcsI+3aW9Z33m1Gj7Len+9bs+PIndt5ywT3dp71mfOTXafku6f/2uD09i9y0n7NNd2nvWZ06Ntt+S7l+/68MJc5O0OSWpcyexnFjfcsI+JW1ukpRfv

局域网 大文件分片上传处理

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

小程序开发总结(一)

℡╲_俬逩灬. 提交于 2020-01-18 16:37:01
最近在开发一个小程序项目准备上线中也是第一个做的小程序中间遇到很多坑通过自己不断实践和努力解决了也分享给大家,缩短大家的开发时间。 一、 修改背景颜色 这是一个很常见的需求在html的中我们可以改变body&html的标签颜色,但是在小程序中你可以通过两种方法 1、修改page的颜色 2、在app.json的文件中修改 "backgroundTextStyle": "#f2f2f2", //注意这里两个属性值需要一致本人亲测 "backgroundColor": "#f2f2f2" 二、 地图引用(腾讯地图) 1、在小程序的需求当中地理位置是常见的一种需求我们这里选用的是腾讯地图,后台用的是百度地图有人肯定问为什么不使用同一个地图,这里是出于百度地图开发文档比较齐全,市面上的开源的插件功能也比较齐全所以后台选用的是百度地图,小程序的爸爸是腾讯所以选的腾讯地图但是在后台需要对经纬度值做一个转换因为百度和腾讯的地图不是同一种经纬度标准。 后期还是需要统一地图标准 腾讯地图使用方法 腾讯地图官网申请一个开发者帐号附( http://lbs.qq.com/mykey.html ) 创建一个密钥 在微信公众号平台设置一个安全域名 这里有个坑如果你不设置这个安全域名在手机演示中无法访问地图api需要打开调试模式才行 具体api可以看腾讯地图文档 三、

vue中使用AES加密

寵の児 提交于 2020-01-18 09:47:05
vue中使用AES加密 先安装 npm install crypto-js --save-dev 在项目中新建一个utils.js文件 我建在 src/assets/js/utils.js utils.js文件中的内容 import CryptoJS from 'crypto-js/crypto-js' // 默认的 KEY 与 iv 如果没有给 const KEY = CryptoJS.enc.Utf8.parse("123");//""中与后台一样 密码 const IV = CryptoJS.enc.Utf8.parse();//""中与后台一样 /** * AES加密 :字符串 key iv 返回base64 */ export function Encrypt(word, keyStr, ivStr) { let key = KEY let iv = IV if (keyStr) { key = CryptoJS.enc.Utf8.parse(keyStr); iv = CryptoJS.enc.Utf8.parse(ivStr); } let srcs = CryptoJS.enc.Utf8.parse(word); var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode

css写作建议和性能优化小结

家住魔仙堡 提交于 2020-01-18 09:01:29
1.前言 还有几天就到国庆中秋了,快要放假了,先祝大家节日快乐!之前写过js的写作建议和技巧,那么今天就来聊聊css吧!说到css,每一个网页都离不开css,但是对于css,很多开发者的想法就是,css只要能用来布局,把效果图排出来就可以了,其它的细节或者优化,不需要怎么考虑。但是我觉得css可不只是把页面的布局完成就是完事的,还需要考虑很多细节有优化,更不会像大家想得那么简单,在学习当中,如果发现什么技巧或者优化的点,我也会学以致用!那么今天,就分享下我总结的css写作建议和性能优化的一些问题!希望能帮让大家对神奇的css有一个新认识,当然,如果大家觉得还有什么其它的建议。欢迎指点! 2.css渲染规则 首选,关于css渲染的规则,大家可能都知道,是从右到左的渲染!如下栗子 .nav h3 a{font-size: 14px;} 渲染过程大概是:首先找到所有的 a ,沿着 a 的父元素查找 h3 ,然后再沿着 h3 ,查找 .nav 。中途找到了符合匹配规则的节点就加入结果集。如果找到根元素 html 都没有匹配,则不再遍历这条路径,从下一个 a 开始重复这个查找匹配(只要页面上有多个最右节点为 a )。 参考: CSS选择器从右向左的匹配规则 3.嵌套层级不要超过3级 一般情况下,元素的嵌套层级不能超过3级,过度的嵌套会导致代码变得臃肿,沉余,复杂。导致css文件体积变大

Android的JNI开发涉及的char和string之间的互相转换

人走茶凉 提交于 2020-01-18 05:38:49
在jni中使用env是有两种情况的,c语言和c++语言。 .c是c语言的源程序格式,.cpp是c++语言的源程序格式。这是两种不同的语言。 C语言互相转换版本: framework/base/services/core/jni 下面是c++语言 system/core/drmservice 下面是c语言 //将char类型转换成jstring类型 jstring CStr2Jstring( JNIEnv* env,const char* str ) { jsize len = strlen(str); // 定义java String类 strClass jclass strClass = (*env)->FindClass(env, "java/lang/String"); //设置String, 保存语言类型,用于byte数组转换至String时的参数 jstring encoding = (*env)->NewStringUTF(env, "GB2312"); // 获取java String类方法String(byte[],String)的构造器,用于将本地byte[]数组转换为一个新String jmethodID ctorID = (*env)->GetMethodID(env, strClass, "<init>", "([BLjava/lang/String;)V"

几种常见的加密算法

China☆狼群 提交于 2020-01-18 03:23:32
一、概念 数据加密 的基本过程就是对原来为明文的文件或数据按某种 算法 进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的 密钥 之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该 编码 信息转化为其原来数据的过程。 简单来说,就是 把某一段数据(明文),按照“某种规则”转换成另外一段不可读的数据(密文)。这里选定的“规则”,就是加密算法。 理所当然,当别人拿到“密文”,解析出“明文”的难度取决于加密算法的破解难度。 二、几种常见的加密算法 1、 Base64算法 原码 /** * Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。 */ public class Base64Util { /* 我们知道Java中是用"8个二进制数字"表示一个实际的字节。 比如:我要用Base64编码一个字符串“abc”,实际算法如下: 'a','b','c'的ASCII标准编码分别为(十进制)97,98,99,因此用二进制表示“abc”字符串就是: 01100001,01100010,01100011 ---3组,每组8字节 Base64的原理:将这三组8字节,分成4组6字节 011000,010110, 001001,100011 ---4组,每组6字节 高位补0 00011000,00010110,

base64转为pcap的方法

微笑、不失礼 提交于 2020-01-18 02:14:35
#coding:utf-8 import base64 import os import binascii def hex2oct(data): if data == 'a': return 10 elif data == 'b': return 11 elif data == 'c': return 12 elif data == 'd': return 13 elif data == 'e': return 14 elif data == 'f': return 15 else: return int(data) def custom_convert(data): if len(data) == 1: return hex2oct(data) elif len(data) == 2: return hex2oct(data[0])*16 + hex2oct(data[1]) else: return -1 def custom_dump(odata): data = odata.encode("hex") slen = len(data) lines = slen/32 if slen%32 !=0: lines = lines + 1 content = "" for i in range(0, lines): line_number = hex(i*16).replace(