常见的加密算法

逆向中常见的Hash算法和对称加密算法的分析 逆向中常常出现一些加密算法,如果我们能对这些加密算法进行快速识别则会大大减少我们逆向的难度,虽然IDA已有密码分析神器Findcrypt,但掌握手动分析方法能帮助我们应对更多的情况。这篇文章将介绍逆向中常见的单项散列算法和对称加密算法的识别方法。 0xFF. 前言 在很长一段时间里我经常发现自己面对复杂的加密算法无从下手,可能是因为还没有系统学过密码学吧orz,总之这个问题困扰了我很久。于是最近我花了一些时间来解决自己在密码学这块的薄弱点,写下这篇文章的目的之一也是为了巩固所学知识。 加密算法的部分没有 阅读详情

1.对称加密

AES 加密

对称密钥加密中最流行的算法之一,Advanced Encryption Standard,安全级别不高的自动登录一般用AES加密,AES加密是比较快的。

动画演示:http://coolshell.cn/articles/3161.html

public class AES {


	/**
	 * 填充字符串,总长为16的倍数,AES加密算法要求 -- 此方法设为私有即可
	 * @param str
	 * @return
	 */
	private static String paddingString(String str) {
		int len = str.length();
		if (0 == len % 16) {
			return str;
		}
		byte[] bytes = new byte[(16 * (len / 16)) + 16];
		for (int i = 0; i < bytes.length; i++) {
			bytes[i] = '\0';
		}
		try {
			byte[] strbytes = str.getBytes("UTF-8");
			for (int i = 0; i < len; i++) {
				bytes[i] = strbytes[i];
			}
			return new String(bytes);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 加密
	 * @param sSrc
	 * @param sKey
	 * @return
	 * @throws Exception
	 */
	public static byte[] encrypt(String sSrc, String sKey) throws Exception {
		if (sKey == null) {
			return null;
		}
		
		if (sKey.length() != 16) {
			return null;
		}
		
		String encryptstr = paddingString(sSrc);
		
		byte[] raw = sKey.getBytes();
		SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
		Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
		cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
		byte[] encrypted = cipher.doFinal(encryptstr.getBytes());

		return encrypted;
	}

	/**
	 * 解密
	 * @param sSrc
	 * @param sKey
	 * @return
	 * @throws Exception
	 */
	public static String decrypt(byte[] sSrc, String sKey) throws Exception {
		try {
			if (sKey == null) {
				return null;
			}
			if (sKey.length() != 16) {
				return null;
			}
			byte[] raw = sKey.getBytes("UTF-8");
			SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
			Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
			
			cipher.init(Cipher.DECRYPT_MODE, skeySpec);
			try {
				byte[] original = cipher.doFinal(sSrc);
				String originalString = new String(original);
				return originalString;
			} catch (Exception e) {
				return null;
			}
		} catch (Exception ex) {
			return null;
		}
	}
}


2.非对称加密

1). RSA 非对称加密,在公开密钥加密和电子商业中RSA被广泛使用,如github 传输到服务器的代码用的ssl 就是 rsa加密,RSA加密是比较慢的。

公钥:加密

私钥:解密

http://blog.youkuaiyun.com/bbld_/article/details/38777491


2). MD5 散列码

public static String md5(String string) {
    byte[] hash;
    try {
        hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException("Huh, MD5 should be supported?", e);
    } catch (UnsupportedEncodingException e) {
        throw new RuntimeException("Huh, UTF-8 should be supported?", e);
    }

    StringBuilder hex = new StringBuilder(hash.length * 2);
    for (byte b : hash) {
        if ((b & 0xFF) < 0x10) hex.append("0");
        hex.append(Integer.toHexString(b & 0xFF));
    }
    return hex.toString();
}


3) BASE 64

android Base64加密解密,androidbase64

// 加密传入的数据是byte类型的,并非使用decode方法将原始数据转二进制,String类型的数据 使用 str.getBytes()即可
String str = "Hello!";
// 在这里使用的是encode方式,返回的是byte类型加密数据,可使用new String转为String类型
String strBase64 = new String(Base64.encode(str.getBytes(), Base64.DEFAULT));
Log.i("Test", "encode >>>" + strBase64);
		
// 这里 encodeToString 则直接将返回String类型的加密数据
String enToStr = Base64.encodeToString(str.getBytes(), Base64.DEFAULT);
Log.i("Test", "encodeToString >>> " + enToStr);
		
// 对base64加密后的数据进行解密
Log.i("Test", "decode >>>" + new String(Base64.decode(strBase64.getBytes(), Base64.DEFAULT)));


java base64解密乱码问题 代码如下:
private String getPictureString() { String upload = ""; try { FileInputStream in = new FileInputStream(fileName); byte[] ba = new byte[in.available()]; in.read(ba); in.close(); upload = new String(android.util.Base64.encode(ba, android.util.Base64.DEFAULT)); } catch (FileNotFoundException e) { LogUtil.e(e.getMessage(), e); } catch (IOException e) { LogUtil.e(e.getMessage(), e); } return upload; }
这个是加密
解密就是
encode换成decode
upload = new String(android.util.Base64.decode(ba,
android.util.Base64.DEFAULT));

 
对于base64、md5等加密解密问题
base64的作用不是加密,而是用来避免“字节”中不能转换成可显示字符的数值。
比如0-32的控制字符,空格,制表符都不能被打印在纸上,base64只使用大写小写数字标点。
可以打印在纸上,数据可以在传统平面媒介上携带。

md5是散列函数,提取数据的特征,输出是不可逆的散列值,用于代表某信息A而又不暴露信息A的内容。不直接用于加密文件。


基于byte流的简单数据加解密 该系统利用数据的byte流,采用value.max相减的方法对数据进行加解密。不区分数据大小,不区分数据类型。可自选存储文件路径及文件名。第一次加载是加密,第二次同样操作是解密。 立即下载

相关推荐

深入解析UDS 0x19服务:DTC状态掩码与故障诊断实战

本文深入解析了UDS诊断协议中的核心0x19服务(ReadDTCInformation),重点拆解了DTC状态掩码(DTCStatusMask)的八个状态位及其在故障生命周期中的联动逻辑。通过实战案例,详细说明了从故障发生、确认到清除的全过程,并介绍了如何利用该服务进行深度诊断,包括读取扩展数据(如冻结帧)和避免常见开发误区,是理解汽车ECU故障管理机制的关键。

weixin_29248313的博客 323

加密算法科普

加密算法科普: 加密一般分为:对称加密(Symmetric Key Encryption)和非对称加密(Asymmetric Key Encryption)。 常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6 和 AES。 常见的非对称加密算法:RSA、ECC (移动设备用)、Diffie-Hellman、El Gamal、DSA (数字签名用)。 常见的 Hash 算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD

weixin_40482816的博客 1672

8.2-12.4GHz喇叭天线设计

使用后处理模板的优化算法,对a1、h_horn、b1进行优化,各参数的优化区间即为之前计算得到的参数范围。由于矩形喇叭的辐射特型基本上是E面和H面扇形喇叭的结合,当波导中只是单模传播(只有TE波)时,矩形喇叭的口径可以通过远场公式推理出来。表示矩形喇叭的口径效率,进行最佳增益设计时,一般取值为0.5。从表中可以看出,该结构在8.58GHz的增益误差为2.68%>2.5%,需要对结构进行优化。建模完成,之后就是在矩形波导尾部添加波导端口激励,以及对应频率的远场监视器。,在这里,将频率定为区间的中心频率。

qq_48897427的博客 6656

AES加解密及Base64编

我们在处理用户中心数据时(登陆和注册),为了增加用户信息的安全系数,一般需要把用户的密码进行加密。 具体流程: 在用户端把用户的密码进行AES加密,然后进行Base64编码,然后发送的奥服务器。服务器拿到数据后,先进行Base64转码,然后进行AES解码。 需要注意的是:在进行AES加解密时密匙必须相同,否则无法解密。 AES加解密原理 AES (Advanced Encryptio

u014716401的博客 1164

STM32 FDCAN热插拔恢复机制与自动重发功能优化

本文深入分析了STM32 FDCAN在热插拔场景下触发bus-off状态导致通讯中断的根本原因,指出自动重发功能是问题关键。通过禁用自动重发、配置硬件自动恢复机制及优化总线参数,实现了FDCAN热插拔后的100%稳定恢复,为工业应用提供了可靠的CAN总线解决方案。

ice55的博客 685

HALCON实战:用两个工业相机实现无缝大视野拼接(附完整代码与避坑指南)

本文详细介绍了使用HALCON软件实现双工业相机图像无缝拼接的完整解决方案,涵盖硬件配置、相机标定、坐标系转换和图像拼接等关键步骤。通过高精度标定和矩阵变换技术,可构建大视野检测系统,适用于液晶面板、PCB等工业检测场景,显著提升检测效率和精度。

weixin_29050513的博客 190

密码学之常见加密方式(05)

常见加密方式 文章目录常见加密方式前言一、对称加密二、DES加密三、DES解密Base64 算法简介Base64 算法原理Base64 构成原则四、base64补等号测试五、AES加密解密六、toString()与new String ()用法区别哪一个是正确的?为什么?toString()与new String ()用法区别什么时候用什么方法呢? 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器

努力是为了站在万人之中,成为别人的光 1万+

第55篇:数据隐私保护技术盘点——差分隐私、同态加密与它们的坑(踩坑总结)

数据隐私保护是AI工程化中必须严肃对待的课题。差分隐私和同态加密是两把利器,但也都是“重武器”,使用不当反而会伤及自身。差分隐私像“模糊处理”,通过加噪来保证统计安全性,要小心管理隐私预算和效用权衡。同态加密像“保险箱里打算盘”,保证了计算的精确性,但必须承受巨大的性能和工程复杂度代价。我的建议是:从小规模实验开始,先用DP-SGD在MNIST/CIFAR-10等标准数据集上感受噪声与精度的关系;再用TenSEAL等易用的库尝试一个加密逻辑回归,体会密文膨胀和速度延迟。

ai_blue_pm的博客 280

数据安全技术几种加密算法

<br />1.自定义加密 Base64编码与其他编码转换<br />using System;<br />using System.Text;<br />/// <summary><br />/// 实现Base64编码与其它编码转换的类<br />/// </summary> <br />public class Base64Provider<br />{<br /> private Base64Provider()<br /> { <br /> }<br />    /// <summary><br

shaohang2008的专栏 1264

Python 爬虫实战:爬取股票数据做 K 线图可视化

摘要:本文介绍基于Python的股票数据爬取与K线图可视化全流程技术方案。通过Requests库抓取东方财富网股票数据,使用Pandas进行清洗处理,并利用mplfinance库实现专业K线图绘制。文章详细讲解了数据爬取接口分析、反爬策略配置、K线图绘制方法(包含基础K线图和带均线的进阶版本),以及核心统计指标计算。该方案可应用于股票价格趋势分析,为投资决策提供数据支持,同时强调了数据使用的合规性和技术优化方向。

2503_91057718的博客 2045

2020.12.25丨CRISPResso2安装教程

一个月前接到一个项目,说是做关于CRISPR的编辑效率个性化分析。本来这个分析以前是没有做过的,不过客户发了参考文献。里面流程和命令行都非常清楚,再加上读研期间CRISPR的项目“中道崩殂”,让我对CRiSPR的技术有些执念,便下决心接下来试试。 整个测序分析使用的工具就是CRISPResso,,下面介绍最快捷的安装方式。 首先,CRISPResso只支持python2.X,不支持3.X你需要下载Anaconda或者miniconda,以Miniconda为例: 安装环境: Linux 64-bi

4632

常见加密算法

加密算法是一种用数学方法对数据进行变换的技术,目的是保护数据的安全,防止被未经授权的人读取或修改。加密算法可以分为三大类:对称加密算法、非对称加密算法和哈希算法(也叫摘要算法)。ps: 严格上来说,哈希算法其实不属于加密算法,只是可以用到某些加密场景中(例如密码加密),两者可以看作是并列关系。加密算法通常指的是可以将明文转换为密文,并且能够通过某种方式(如密钥)再将密文还原为明文的算法。

2303_78378466的博客 922

9、硬件工程师笔试面试知识器件篇——三极管(2025版本)

本文全面介绍了三极管的基础知识与应用,包括其结构、类型、工作原理、工作状态、功能、应用场景及特性参数。详细探讨了三极管在信号放大、无线通信、音频设备及医疗设备中的具体应用,并深入分析了设计放大电路时如何平衡增益与噪声、优化偏置电路以提高稳定性、使用负反馈改善性能等关键问题。此外,文章还涵盖了高频电路设计、温度补偿策略、电磁干扰防护等实用内容,为硬件工程师提供了全面的技术参考和设计指导。

XU157303764的博客 7311

常见加密算法概述

常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 其中, 常见的对称加密算法有:DES、AES、base64 常见的非对称加密算法有:RSA HASH算法:SHA1、MD5 1、 DES加密算法:是一种对称加密算法。DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密...

specialonion的博客 1624

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

常见加密算法分类

常见加密算法分类 常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 对称加密 指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对...

xiansong1005的博客 9930

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

几种常见的加密算法

一、概念 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。 简单来说,就是把某一段数据(明文),按照“某种规则”转换成另外一段不可读的数据(密文)。这里选定的“...

杨先森的专栏 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

常见加密算法介绍

简介 做为一个开发人员,了解一些加密算法是很有必要的,通过加密算法,我们能完成数据通信的三个目标,分别为数据的保密性、数据的完整性、源和目标用户的合法性,而常见的加密算法类型大体可以分为三类:对称加密,非对称加密,单向加密 对称加密算法 加密算法与解密算法的秘钥key一致,即加密解密的密钥一致。在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方...

小夏陌的博客 3173

常见加密算法有哪些

本文介绍了五种常见加密算法: AES:对称加密标准,支持128/192/256位密钥,速度快适合大数据加密; RSA:非对称加密,基于大数分解难题,适用于SSL/数字签名等场景; CRC:循环冗余校验算法,用于快速数据校验; MD5:已被破解的128位哈希函数,仅适用于非安全场景; SHA-256:安全哈希算法,抗碰撞性强,广泛应用于区块链等领域; BCrypt:专为密码存储设计,内置加盐和慢哈希特性。 文中还对比了各算法的特点和安全适用场景,为技术选型提供参考。

屹奕的博客 1314

常见的七种加密算法及实现

以。

harmful_sheep的博客 6573

【数据安全】常见加密算法总结

加密算法是一种用数学方法对数据进行变换的技术,目的是保护数据的安全,防止被未经授权的人读取或修改。加密算法可以分为三大类:对称加密算法、非对称加密算法和哈希算法(哈希算法是一种单向过程,它将输入信息转换成一个固定长度的、看似随机的哈希值,但这个过程是不可逆的,因此严格上来说,哈希算法其实不属于加密算法)保存在数据库中的密码需要加盐之后使用哈希算法(比如 BCrypt)进行加密。保存在数据库中的银行卡号、身份号这类敏感数据需要使用对称加密算法(比如 AES)保存。

大河之犬的博客 3412
上一篇: git 分享
下一篇: activity 的onrestart() 方法总会被调用么
javalive09
博客等级 码龄16年 43粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值