- 博客(30)
- 收藏
- 关注
原创 CA和数字证书
Certificate Authority,简称CA,是数字证书认证中心的简称,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA的作用是检查证书持有者身份的合法性,并签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理。CA证书的内容主要包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签名和有效期等等。目前,证书的格式和验证方法普遍遵循X.509 国际标准。数字证书在用户公钥后附加了用户信息及CA的签名。使用
2021-01-31 23:18:51
4727
1
原创 浅谈加密和签名
@[TOC] 浅谈加密和签名1. 前言一直想写一篇关于加解密和签名验签的文章,正好最近有空,做个总结。现如今,数据安全越来越被大众重视,不论是从网络下载一个程序安装包,还是从特定的服务器请求数据,都涉及到数据安全。确定这些数据是否真实、有没有被篡改、我们能否信任这些数据,就需要了解加解密和数字签名相关的知识。加密主要分为对称加密 和 非对称加密。对称加密,顾名思义,加密方和解密方使用相同的密钥处理数据。密钥具有唯一性,典型的对称加密算法有DES、3DES、AES及国密SM4,对称加解密都是以数据块(
2021-01-20 18:32:50
922
原创 详解编辑.9格式(9patch)图片
详解编辑格式.9图片前言前言在实际开发中经常遇到一种情况: 用某张图片做控件背景,背景图片拉伸后导致显示变形。比如聊天窗口的气泡显示框,单纯的气泡图片不能自适应内容,导致文字或图片等超过框边界。又比如App的启动页放一张图片全屏显示,因为Android的机型屏幕尺寸、分辨率太多,导致这张图片在某些机型上显示图像变形。这时,9patch图片就派上用场了。9patch,又称".9"图片,与常规的图...
2020-04-17 11:51:55
1971
原创 Android Gradle Study
Android Gradle StudyGradle Recipes for Android(共168页) 第2页Gradle for Android Basicsgradle命令行编译Android应用工程Setting Project PropertiesGradle Recipes for Android(共168页) 第2页////Android Studio used Gradle...
2020-03-10 21:48:51
596
原创 Android混淆之ProGuard
文章目录初识ProGuardProGuard详解什么在压缩?什么是混淆?反射混淆选项非keep选项keep选项class_specificationProGuard其他需要注意的事项一份通用的ProGuard混淆文件初识ProGuardAndroid开发的小伙伴们都或多或少的接触过混淆,很多人都对混淆很困惑。需要发版的时候,从网上load一份混淆文件,或从其他项目中拷贝一份过来,修改一下,管用...
2019-12-20 22:47:20
1173
原创 java 泛型总结
java 泛型总结前言泛型类和泛型方法泛型类泛型方法静态泛型方法类型变量的限定类型擦除虚拟机解析泛型多态与类型擦除小结java泛型的限制泛型类型的继承规则注意点通配符子类型限定超类型限定无限定通配符前言泛型机制是Java SE 5.0开始引入的,没有泛型之前,不同类型的对象重用相同的代码时,普遍使用Object变量,然后再进行强制类型转换。java中的ArrayList就是一个泛型类。假设自己...
2019-11-13 21:38:46
334
原创 JNI学习总结
JNI学习总结JNI简介JavaVM和JNIEnvJNI Types and Data StructuresPrimitive TypesReference TypesField and Method IDsThe Value TypeJNI注册JNI静态注册静态注册的示例代码JNI静态注册的优缺点JNI动态注册Type Signatures静态注册的示例代码功能快捷键合理的创建标题,有助于目录的...
2019-10-31 13:00:38
232
原创 The Invocation API
翻译自https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.htmlChapter 5The Invocation API allows software vendors to load the Java VM into an arbitrary native application. Ve...
2019-10-17 21:54:53
216
原创 JNI Functions
翻译自https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.htmlChapter 4This chapter serves as the reference section for the JNI functions. It provides a complete listing of ...
2019-10-17 16:53:33
362
原创 JNI Types and Data Structures
翻译自https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.htmlChapter 3本章讨论JNI如何将Java类型映射到本地C类型。Primitive TypesTable3-1 描述Java基本类型及其与机器相关的本地代码的等价类型。Table3-1 Primitive Type...
2019-10-12 16:39:03
204
原创 JNI Design Overview
翻译自 https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.htmlChapter 2本章重点介绍JNI中的主要设计问题。 本节中的大多数设计问题都与本地方法有关。 第5章将介绍调用API的相关设计。 JNI Interface Functions and Pointers本地代码通...
2019-10-12 15:31:41
134
原创 JNI Introduction
翻译自 https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/intro.htmlChapter 1本章介绍Java本地接口(JNI)。 JNI是一个本地编程接口。 它允许在Java虚拟机(VM)内运行的Java代码与使用其他编程语言(如C,C ++和汇编)编写的应用程序和库进行交互操作。JNI最重要的优点是...
2019-10-11 16:45:45
119
原创 Varint数据压缩算法
二进制补码 先说说二进制补码。对于有符号型整数的二进制表示而言:1. 最高位是符号位,0代表正数,1代表负数;2. 正数和0的反码和补码都是本身;3. 对于负数,反码就是符号位不变,其他各位依次取反;补码就是在反码的基础上加1;以int32举例: 数值 源码 反码 补码 15 0...0,0000,1111 共32bit...
2019-09-30 16:27:39
1689
原创 关于aar的一些坑
1. gradle工程如果有远程依赖,则生成aar后,默认不会包含这些远程依赖。所以如果主工程引用了若干aar,应该检查aar对应的原工程是否有远程依赖,如果有的话,都应该在主工程中添加。否则编译会报NoClassDefineException。以github上的usb carema驱动为例,引用其aar的同时应包含对应远程依赖:dependencies { compile fileTre...
2019-01-18 14:24:05
1357
原创 ClassLoder总结
1. 关于javac、java我们先从熟知的jdk命令javac、java说起。首先,Android Studio(以下简称AS)创建一个工程,并在默认包名下新建一个HelloWorld的类。然后打开AS自带的Terminal, 路径切换到HelloWrold.java所在的目录,依次执行javac和java命令:javac命令执行正常,但java命令却报错:错...
2018-10-25 22:17:09
287
原创 C中的static和extern总结
我们知道,C语言中没有类的概念,代码都是以文件为单位组织的。对于非局部变量和函数,只能在唯一的一个C文件中定义一次,多文件同时定义就会导致编译器报重复定义的错误。而为了能在其他C代码文件中使用这些非局部变量和函数,就有了extern关键字。同时,为了文件的代码隔离,有些变量和函数不想被其他文件访问,就有了static关键字。下面将围绕extern和static说明它们的作用。1. exter...
2018-10-25 22:08:02
1434
原创 java中正则表达式匹配ip地址的写法
对于IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值。将0-255用正则表达式表示,可以分成一下几块来分别考虑:取值区间 特点 正则写法 可合并的写法 可合并的写法 可合并的写法 0-9 一位数,只有个位,取值是0~9 \d [1-9]?\d 1\d{2}|[1-9]?\d ...
2018-09-27 16:12:24
11161
1
原创 HttpsClient单向认证 不校验服务器证书
获取 HttpsClient单例:if(getUrl().contains("https://")){mClient = getHttpsClient();}private synchronized static AsyncHttpClient getHttpsClient(){ if(httpsClient == null){ httpsC...
2018-09-25 11:34:03
1852
原创 View绘制流程代码解析
Android开发中,View的绘制流程和事件分发处理流程一直都是初级开发人员理解的难点,也是面试的热点,关于这个话题网上的文章很多,但为了自己加深记忆,还是决定自己写一篇,欢迎志同道合的同学一起交流进步。1.1 View简介 View是用户接口组件的基础构建元素。一个View在屏幕上占据了一个矩形区域,负责绘制和处理事件。ViewGroup是View的子类,它是layout的...
2018-08-05 22:30:18
230
原创 ANR2
1.2.2 ANR信息是如何输出的我们再来看看这些log是怎样被输出的,这很重要,知其然,也要知其所以然。代码在ActivityManagerService类中,找到它的appNotResponding函数。final void appNotResponding(ProcessRecord app, ActivityRecord activity,ActivityRecord parent, fi...
2018-05-30 17:50:14
209
原创 ANR
本文部分内容摘自http://rayleeya.iteye.com/blog/1955652,并进行了总结和修改1.1 ANR简介ANR,"Application Not Responding"的缩写,中文意思为"应用程序无响应"。在Android中,ActivityManagerService(简称AMS)和WindowManagerService(简称WMS)会监测应用程序的响应时...
2018-05-30 17:41:46
830
原创 HTTPS单向认证和双向认证
对于使用AsyncHttpClient做网络请求的客户端而言1. 单向认证:中信蓝牙key广播报文(1170):020106 0A09434954494331313730 1016F0FFBD6D80DADF0000000000000000 31byte1BFF5444010001DC41A6D729E8BC0A393C5D622C9355721088D82C06 0226FF 31by...
2018-05-18 12:21:33
1052
原创 Windows下,Android Studio项目路径中包含中文字符无法编译的问题
Android Studio项目路径中包含中文字符无法编译的问题报错Your project path contains non-ASCII characters.Android Studio 报下面的错误Error:(1, 0) Your project path contains non-ASCII characters. This will most likely cause the bui...
2018-05-17 17:48:35
5329
2
原创 JavaScript学习笔记一 js基础
总结自http://www.w3school.com.cn操作 HTML 元素如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法。请使用 "id" 属性来标识 HTML 元素:<!DOCTYPE html><html><body><h1>My First Web Pa...
2018-04-25 17:10:03
1812
原创 Base64编码简介
首先,Base64是一种编码方式,而不是真正的加密方式。即使算,Base64 也仅用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。详细规范可查看RFC2045~RFC2049。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识...
2018-04-12 11:16:35
318
原创 SHA-1 算法加密
SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。 单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不...
2018-04-11 17:56:27
1506
转载 MD5算法
文章内容大部分摘自百度百科。 MD5Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data SecurityInc. April 1992)。MD5即Me...
2018-04-11 17:36:19
461
原创 JNI Tips
JNI Tips本文翻译自 Android/sdk/docs/training/articles/perf-jni.html,大体为意译,如有不足之处,请指正。JNI是Java本地接口。 它定义了一种用Java编写的托管代码与用C/C++编写的本地代码交互的方式。它与供应商无关,支持从动态库中加载代码,虽然有时非常麻烦,但效率相当高。如果你还不熟悉JNI,请先阅读Java Native...
2018-04-09 10:12:20
296
原创 Android 指纹识别加解密
主要用到的是FingerprintManager这个类,此类是访问指纹硬件的便捷类,通过Context#getSystemService(Context.FINGERPRINT_SERVICE)获取相应的单例。应用场景:在指纹加密模块中对一个具有某种特定功能的数据(比如密码等)进行加密;在其他需要进行密码验证的地方,通过指纹解密模块将加密的数据还原后验证。首先在Manifest.xml中添加权限申...
2018-04-02 16:10:29
3170
2
原创 Android Keystore System介绍
翻译 sdk/docs/training/articles/keystore.html?q=keystore#q=keystoreKeyStore KeyStore负责维护加密密钥及其所有者。可以通过修改JAVA_HOME/lib/security/java.security文件的'keystore.type'属性更改系统密钥库的类型。Android Keystore系统允许您将密钥存储在容器中,...
2018-04-02 16:10:01
2278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人