加密

MD5加密

人走茶凉 提交于 2021-02-16 23:34:27
前言:这是我项目中运用到的地方,希望能帮到大家。 MD5.js地址 http://xiazai.sogou.com/detail/34/16/-883576791258902919.html?e=1970 进去下载,链接到网页中 <script type="text/javascript" src="md5.js" ></script> MD5的用法 hex_md5(document.getElementById("text").value); MD5的用处 MD5也可以应用在对密码得加密,那么加密后有什么作用呢?和加密前有什么区别呢? 1.因为是不可逆的,所以在数据库里面看到的密码是无用的,你不是检验用户的密码,而是检验用户输入的密码经md5加密以后和数据库内的是否相符 2.你不希望你的邮件服务器的管理员知道你的信用卡密码吧? MD5在线测试地址 http://www.cmd5.com/ MD5案列: body: <input type="text" id="text" /> <input type="button" value="点击" id="aaa" /> <div id="result"></div> js $(document).on("click","#aaa",function(){ var hash=hex_md5(document.getElementById(

Android安全攻防战,反编译与混淆技术完全解析(上)

核能气质少年 提交于 2021-01-27 00:54:45
之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值得骄傲的事情。不过单纯从技术角度上来讲,掌握反编译功能确实是一项非常有用的技能,可能平常不太会用得到,但是一旦真的需要用到的了,而你却不会的话,那就非常头疼了。另外既然别人可以反编译程序,我们当然有理由应该对程序进行一定程度的保护,因此代码混淆也是我们必须要掌握的一项技术。那么最近的两篇文章我们就围绕反编译和混淆这两个主题来进行一次完全解析。 反编译 我们都知道,Android程序打完包之后得到的是一个APK文件,这个文件是可以直接安装到任何Android手机上的,我们反编译其实也就是对这个APK文件进行反编译。Android的反编译主要又分为两个部分,一个是对代码的反编译,一个是对资源的反编译,我们马上来逐个学习一下。 在开始学习之前,首先我们需要准备一个APK文件,为了尊重所有开发者,我就不拿任何一个市面上的软件来演示了,而是自己写一个Demo用来测试。 这里我希望代码越简单越好,因此我们建立一个新项目,在Activity里加入一个按钮,当点击按钮时弹出一个Toast,就这么简单,代码如下所示: public class MainActivity extends AppCompatActivity { @Override protected void onCreate (Bundle

Java:byte[]->Base64 String-> byte[]

和自甴很熟 提交于 2021-01-05 02:41:01
在加解密程序中,为了使加解密传递的参数使用 String 。就必须将 byte[]( 加密 )->String( 中间传递 )-> byte[]( 解密 ) 。 用传统的: retData = new String(myEncryptedData,); byte [] myData = retData .getBytes(charset); 将出现乱码: String 的 getBytes() 方法是得到一个字串的字节数组,这是众所周知的。但特别要注意的是,本方法将返回该操作系统默认的编码格式的字节数 组。如果你在使用这个方法时不考虑到这一点,你会发现在一个平台上运行良好的系统,放到另外一台机器后会产生意想不到的问题。 所以转化为 String 时,用 Base64 编码。 String str = "2b421331c747d1ec54fa5df39f0a3372" ; // 待加密数据 // 2.1 >>> 调用加密方法 byte [] encryptedData = encrypt(rawKeyData, str); //加密转换 BASE64Encoder enc = new BASE64Encoder(); //加密运算之后 将byte[]转化为base64的String String encryptedtext = enc.encode(encryptedData);

java+加密解密

你说的曾经没有我的故事 提交于 2021-01-04 03:35:18
EncrypAES public class EncrypAES { // KeyGenerator 提供对称密钥生成器的功能,支持各种算法 private KeyGenerator keygen; // SecretKey 负责保存对称密钥 private SecretKey deskey; // Cipher负责完成加密或解密工作 private Cipher c; // 该字节数组负责保存加密的结果 private byte[] cipherByte; public EncrypAES() throws NoSuchAlgorithmException, NoSuchPaddingException { Security.addProvider(new com.sun.crypto.provider.SunJCE()); // 实例化支持DES算法的密钥生成器(算法名称命名需按规定,否则抛出异常) keygen = KeyGenerator.getInstance("DES");// // 生成密钥 deskey = keygen.generateKey(); // 生成Cipher对象,指定其支持的DES算法 c = Cipher.getInstance("DES"); } /** * 对字符串加密 */ public byte[] Encrytor(String str)

加密狗的一些介绍

回眸只為那壹抹淺笑 提交于 2020-04-17 03:24:15
【推荐阅读】微服务还能火多久?>>> 加密狗是目前流行的一种软件加密工具。它是插在计算机接口上的软硬件结合的软件加密产品。一般有USB口和并口两种,又称USB加密狗和并口加密狗,目前流行的一般是USB加密狗,并口加密狗在前几年的时候用得比较多。 加密狗内部一般都有几十到几十K字节的存储空间可供读写,有的内部还增添了一个单片机。软件运行时通过向狗发送消息,判断从接口返回密码(简单的就是返回0或1)数据正确与否来检查加密狗是否存在。此种方式可以通过直接修改返回值,来达到破解的目的。 另一种可以在加密狗内写入一些数据,程序执行时需要从加密狗内读取数据,这种情况下,如果只是简单的修改返回值,程序是肯定不能正常运行的,所以就有了复制加密狗的破解方法。 加密狗技术实际上并不是很高深的技术,因为主要的加密狗的芯片和内部文件都有专业的黑客及厂家提供,软件作者一般只是把数据文件用专用软件写入狗中,所以不存在技术先进不先进之分。 这里只是简单的分析了加密狗破解的一些常见思路,对于软件作者来说,还是有相应的策略的,这也就是矛与盾的关系,互相促进,互相提高。加密狗的破解大致可以分为三种方法,一种是通过硬件克隆或者复制,一种是通过SoftICE等Debug工具调试跟踪解密,一种是通过编写拦截程序修改软件和加密狗之间的通讯。 硬件克隆复制主要是针对国产芯片的加密狗

Crypto++应用:非对称加密RSA

∥☆過路亽.° 提交于 2020-04-12 17:59:43
1,非对称加密RSA: (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。 (2)甲方获取乙方的公钥,然后用它对信息加密。 (3)乙方得到加密后的信息,用私钥解密。 2,使用CryptoPP实现RSA: CryptoPP是一套非常完整的加密解密开源解决方案,如何使用这里就不多说了,请自行Google。 #include "..\cryptopp562\randpool.h" #include "..\cryptopp562\osrng.h" #include "..\cryptopp562\rsa.h" //待加密的字符串 string message = "http://my.oschina.net/xlplbo/blog"; printf("message = %s, length = %d\n", message.c_str(), strlen(message.c_str())); /* //自动生成随机数据 byte seed[600] = ""; AutoSeededRandomPool rnd; rnd.GenerateBlock(seed, sizeof(seed)); printf("seed = %s\n", (char *)seed, strlen((char *)seed)); /

PHP 中的随机数——你觉得可靠么?

廉价感情. 提交于 2020-03-17 18:02:49
某厂面试归来,发现自己落伍了!>>> 本文主要分析以加密为目的的随机数生成问题。PHP 5 并未提供生成强加密随机数的简便机制,但是,PHP 7 引入了两个 CSPRNG 函数以解决该问题。系 OneAPM 工程师编译整理。 什么是 CSPRNG? 引用 维基百科 的定义,密码安全的虚拟随机数生成器(Cryptographically Secure Pseudorandom Number Generator,CSPRNG)是带有特定属性使之在密码学中适用的虚拟随机数生成器(pseudo-random number generator,PRNG)。 CSPRNG 主要用于: 生成键(比如:生成复杂的键) 为新的用户账号生成随机密码 加密系统 保证高安全水准的一个重要因素便是高质量的随机数。 PHP 7 中的 CSPRNG PHP 7 为 CSPRNG 引入了两种新函数: random_bytes 与 random_int 。 random_bytes 函数返回 string 类型,并接受一个 int 类型为参数,该参数规定了所返回字符串的字节长度。 例如: $bytes = random_bytes('10'); var_dump(bin2hex($bytes)); //possible ouput: string(20) "7dfab0af960d359388e6" random

OpenSSL 之 RSA 相关命令学习笔记

笑着哭i 提交于 2020-02-29 09:40:25
作者: Angus.Fenying < i.am.x.fenying@gmail.com > 日期: 2016-11-10 10:35 PM 本文介绍 OpenSSL 命令行进行 RSA 加密、解密、签名、验证的操作,但不涉及 RSA 算法原理解析,如有兴趣,可以阅读阮一峰的《RSA算法原理》。如果你只想知道 RSA 是什么,那么你只要记住: RSA 是一种加密算法,使用两个密钥,一个叫公钥,一个 叫私钥,使用公钥加密的密文只有使用私钥才可以解密,反之亦然。 Section 0: 生成随机文件 由于 OpenSSL 创建密钥文件是随机生成的,因此有必要为之提供一份随机数据源。 可以用 openssl 的 rand 命令创建一个 64MB 的随机文件,保存为文件 randSrc.bin 。 openssl rand -out ./randSrc.bin 67108864 还可以使用 -base64 或者 -hex 两个参数之一指定输出格式为 BASE64 或者 HEX。 Section 1: 生成一个密钥文件 小贴士: 根据目前的普遍需求,应当使用 AES256 为加密标准。 通常 RSA 私钥文件命名为 name.pem ,公钥文件名为 name_pub.pem 。 OpenSSL 生成的密钥文件默认是 PEM 格式的。 openssl genrsa \ -rand randSrc

课后作业1:字串加密

本秂侑毒 提交于 2019-12-26 02:19:54
1、古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:      请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求 设计思想、程序流程图、源代码、结果截图 。   设计思想: 用户从弹出的输入消息框内输入字符串,不限制大小写。   使用toCharArray()函数将字符串转化成字符数组,再由加密和解密两个按钮分别对字符数组的每个字符进行单独操作,加密则+3,解密则-3。再强制转换回字符类型并拼合成字符串,从不可编辑的文本框输出。   程序流程图:      程序源代码: 1 package tiaoshi; 2 import java.awt.*; 3 import java.awt.event.*; 4 import javax.swing.*; 5 public class Test 6 { 7 JFrame frame; 8 JButton button1; 9 JButton button2; 10 JTextArea text; 11 JScrollPane s; 12 public static void main(String[] args) 13 { 14 Test g=new Test(); 15 g.go(); 16 } 17 public void go() 18 { 19 frame=new JFrame("密码改写"); 20

C# 一个简易的加密、解密字符串工具类

荒凉一梦 提交于 2019-12-25 22:06:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文实现的类CypherHelper是一个用于加密、解密字符串的工具类~~~,适合于方便地加密、解密长度较短的密码等字符串(C#里面已经有了库System.Security.Cryptography,对于比较长的字符串或流来说是一个更好的选择) 类CypherHelper代码: class CypherHelper { /// <summary> /// 加密字符串 /// </summary> /// <param name="word">被加密字符串</param> /// <param name="key">密钥</param> /// <returns>加密后字符串</returns> public static string Encrypt(string word, string key) { if (!System.Text.RegularExpressions.Regex.IsMatch(key, "^[a-zA-Z]*$")) { throw new Exception("key 必须由字母组成"); } key = key.ToLower(); //逐个字符加密字符串 char[] s = word.ToCharArray(); for (int i = 0; i < s.Length; i+