- package com.md5.util;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.nio.ByteBuffer;
- import java.nio.channels.FileChannel;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import com.md5.Constants;
- /**
- * MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能。\
- */
- public class MD5Util {
- /**
- * 16进制字符集
- */
- private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
- 'E', 'F' };
- /**
- *
- * 指定算法为MD5的MessageDigest
- */
- private static MessageDigest messageDigest = null;
- /**
- *
- * 初始化messageDigest的加密算法为MD5
- */
- static {
- try {
- messageDigest = MessageDigest.getInstance("MD5");
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- }
- /**
- * 获取文件的MD5值
- *
- * @param file
- * 目标文件
- * @return MD5 字符串
- */
- public static String getFileMD5String(File file) {
- String ret = "";
- FileInputStream in = null;
- FileChannel ch = null;
- try {
- in = new FileInputStream(file);
- ch = in.getChannel();
- ByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
- messageDigest.update(byteBuffer);
- ret = bytesToHex(messageDigest.digest());
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (in != null) {
- try {
- in.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (ch != null) {
- try {
- ch.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return ret;
- }
- /**
- * 获取文件的MD5值
- * @param fileName 目标文件的完整名称
- * @return MD5 字符串
- */
- public static String getFileMD5String(String fileName) {
- return getFileMD5String(new File(fileName));
- }
- /**
- * MD5加密字符串
- * @param str 目标字符串
- * @return MD5 加密后的字符串
- */
- public static String getMD5String(String str) {
- return getMD5String(str.getBytes());
- }
- /**
- * MD5加密以byte数组表示的字符串
- * @param bytes 目标byte数组
- * @return MD5 加密后的字符串
- */
- public static String getMD5String(byte[] bytes) {
- messageDigest.update(bytes);
- return bytesToHex(messageDigest.digest());
- }
- /**
- * 校验密码与其MD5是否一致
- * @param pwd 密码字符串
- * @param md5 基准MD5值
- * @return 检验结果
- */
- public static boolean checkPassword(String pwd, String md5) {
- return getMD5String(pwd).equalsIgnoreCase(md5);
- }
- /**
- * 校验密码与其MD5是否一致
- *
- * @param pwd 以字符数组表示的密码
- * @param md5 基准MD5值
- * @return 检验结果
- */
- public static boolean checkPassword(char[] pwd, String md5) {
- return checkPassword(new String(pwd), md5);
- }
- /**
- * 检验文件的MD5值
- * @param file 目标文件
- * @param md5 基准MD5值
- * @return 检验结果
- */
- public static boolean checkFileMD5(File file, String md5) {
- return getFileMD5String(file).equalsIgnoreCase(md5);
- }
- /**
- * 检验文件的MD5值
- * @param fileName 目标文件的完整名称
- * @param md5 基准MD5值
- * @return 检验结果
- */
- public static boolean checkFileMD5(String fileName, String md5) {
- return checkFileMD5(new File(fileName), md5);
- }
- /**
- * 将字节数组转换成16进制字符串
- * @param bytes 目标字节数组
- * @return 转换结果
- */
- public static String bytesToHex(byte bytes[]) {
- return bytesToHex(bytes, 0, bytes.length);
- }
- /**
- * 将字节数组中指定区间的子数组转换成16进制字符串
- *
- * @param bytes
- * 目标字节数组
- * @param start
- * 起始位置(包括该位置)
- * @param end
- * 结束位置(不包括该位置)
- * @return 转换结果
- */
- public static String bytesToHex(byte bytes[], int start, int end) {
- StringBuilder sb = new StringBuilder();
- for (int i = start; i < start + end; i++) {
- sb.append(byteToHex(bytes[i]));
- }
- return sb.toString();
- }
- /**
- * 将单个字节码转换成16进制字符串
- * @param bt 目标字节
- * @return 转换结果
- */
- public static String byteToHex(byte bt) {
- return HEX_DIGITS[(bt & 0xf0) >> 4] + "" + HEX_DIGITS[bt & 0xf];
- }
- public static void main(String[] args) throws IOException {
- // long begin = System.currentTimeMillis();
- // String md5 = getFileMD5String(new File("F://aaa.rar"));
- // long end = System.currentTimeMillis();
- // System.out.println("MD5:\t" + md5 + "\nTime:\t" + (end - begin) +
- // "ms");
- System.out.println(getMD5String("123456abcd" + Constants.SALT_VALUE));
- }
- }
相关推荐
加密算法(MD5加密、MD5Hash加密、BCrypt加密)
1 MD5加密介绍 MD5是一个加密的算法,可以对明文字符串进行加密,得到一个密文。 MD5原文和密文是一对一的键值对。 例如:原文:123 密文:202cb962ac59075b964b07152d234b70 不管执行多少次,加密算法是固定的,得到的密文永远不变 相对来说就不安全,容易被破解 公司中使用MD5进行加密 例如:原文密码是123,把首尾交换,再加上用户名进行加密 例如:321meimei 进行加密e5212215b8cbf493e04f4290c
MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest;
JAVA_MD5加密 3个不同的版本
3个MD5个加密的版本。 MD5 MD5加强版 MD5超加强版 源代码
Qt之大文件获取MD5值
在Qt中,QCryptographicHash类提供了生成密码散列的方法。该类可以用于生成二进制或文本数据的加密散列值。目前支持MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。 这个类在QtCore4.3中被引入。 小文件内容加密的时候,直接将文件内容传进入加密即可,但遇到大文件的时候这样的办法需要优化。 思路就是:在循环中不停读文件,读到一
ST MCSDK V6.2.0实战:手把手教你配置HSO-ST观测器,体验500ms收敛的电机无感控制
本文详细介绍了ST MCSDK V6.2.0中HSO-ST观测器的配置方法,实现500ms内电流收敛的无感电机控制。从环境搭建、核心参数解析到无感启动优化,提供实战技巧和性能调优策略,帮助开发者快速掌握高效电机控制技术。
simulink中MIL测试简单理解
输入信号设置如下:选中New Test Case1 ---INPUT。5、新建(选择New,Test from Spreadsheet)6、可以新建也可以导入(Use existing test)Source:Output为自己预测结果。3、右键子系统(Create)打开生成表格,可以自己调试。4、创建测试用例表格。保存路径为模型路径。保存路径在模型路径。8、运行测试设h置。
获取文件MD5工具类-支持大文件
未防止文件过大引起内存溢出,建议使用getMD5String(InputStream inputStream) import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.security.MessageDigest;...
支付宝H5支付唤醒协议全解析:从alipays://到动态orderSuffix的抓取与拼接
本文深入解析支付宝H5支付唤醒协议,从alipays://协议设计到动态orderSuffix参数的抓取与拼接,详细介绍了支付宝H5支付的底层机制。内容包括协议架构剖析、动态令牌生成与捕获、浏览器兼容性解决方案以及安全机制设计,为开发者提供全面的技术指南和实践建议。
算法的研究2
算法的应用 MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如: MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461 这就是tanajiya.ta
安卓集成华为HMS Scankit实现自定义扫码功能
实现扫码功能 使用的是集成华为扫描的SDK,UI界面借鉴的是谷歌官方的Zxing项目中的自定义view,两者结合实现。 先上效果图: 先在项目根级别(build.gradle)当中配置HMS Core SDK的Maven仓地址。 // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huaw
计算机视觉-全景图像拼接中的特征匹配与优化策略
本文深入探讨了计算机视觉中全景图像拼接的核心技术,重点解析了特征匹配后的关键优化策略。通过SIFT特征提取、RANSAC算法剔除误匹配,并结合APAP算法应对视差与鬼影问题,详细阐述了从基础对齐到无缝融合的完整流程,为开发者实现高质量全景拼接提供了实用指南。
uniapp使用md5加密 js使用md5加密
uniapp使用md5加密 项目中使用md5加密 md5加密的使用方法
【2024年华为秋招-12月25日-第三题(300分)- PCB印刷电路板布线】(题目+思路+Java&C++&Python解析+在线测试)
在PCB印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大、而且赛件之间还有别的器件和别的干扰源,在布线时我们希望受到的干扰尽量小。现将电路板简化成一个M×N的矩阵,每个位置(单元格)的值表示其源干扰度。如果单元格的值为0,表示此位置没有干扰源;如果单元格的值为非0,则表示此位置是干扰源,其值为源干扰度。连线经过干扰源或干扰源附近会增加连线的总干扰度。位置Axy的干扰源的源干扰度为dd01、若连线经过位置Axy,则其总干扰度会增加d;2、若连线经过离位置A。
Android MD5加密
概述在网络中传输明文是一件非常危险的事情,所以通常将密码加密后传至服务器,由服务器保存密文在登录判定时只需比较密文是否相同即可。MD5加密是一种常用的加密算法,全称为“Message-Digest Algorithm 5”,即消息摘要算法,由MD2、MD3、MD4演变过来的,是一种单向加密算法,是一种不可逆的加密方式MD5优点:压缩性:任意长度的数据,算出的MD5值长度都是固定的。容易计算:从原数...
【DL经典回顾】距离度量大汇总(7-余弦距离(Cosine Distance))
余弦距离(Cosine Distance)衡量的是两个向量在方向上的差异性,而不是在大小上的差异。
Calibre 3Dstack Flow Example(5-2)
本文详细介绍了Calibre3DSTACK工具在3D-IC设计验证中的应用。主要内容包括:1)连通性检查(LVS)规则编写,重点说明connected命令的使用方法和多文本标签处理;2)设计规则检查(DRC)实现,涵盖层间距检查和焊盘重叠检查;3)系统网表生成器操作流程,从芯片导入到网连通性定义;4)两种规则文件语法(扩展语法和传统语法)的编写示例;5)验证报告文件格式解析。通过具体案例演示了如何建立完整的3D-IC验证流程,包括芯片定义、装配操作、电气连接验证和物理规则检查等关键步骤,为3D-IC设计验证
md5加密,md5加盐加密和解密
package com.java.test; import java.security.MessageDigest; import java.security.SecureRandom; import java.util.Arrays; public class Test { private static final Integer SALT_LENGTH = 12; ...
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
python中md5加密与md5+salt加密
例如随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示以下是本篇文章正文内容,下面案例可供参考首先本文对md5加密算法进行了简单的介绍,并编写了相关的python语法。...
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
C#实现MD5加密
MD5的全称是message-digest algorithm 5,MD5算法属于hash算法的一类,对消息进行运算,产生一个128位的消息摘要(32位数字字母),并且加密不可逆,相同数据的加密结果一定相同。 C# 实现MD5加密。MD5加密16位和32位
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
MD5加密——MD5只能加密不能解密
public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; try { byte[] btInput = s.ge...
MD5密码加密
MD5 信息摘要演算法(Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash value),用于确保信息传输完整一致。
python md5加密解密_python md5加密解密
md5加密以后的字符串长度我下了一段用JAVA实现MD5加密的算法,不管输入字符串多长,加密后的字符加密后为128位(bit),按照16进制(4位一个16进制数)编码后,就成了32个字符。MD5并不是加密算法zhidao,而是摘要算法。加密算法是可逆的,摘要算法是理专论上不可逆的,详细步骤:md5算法主要应用在密码领域,为了防止明文传输密码的危险Python怎么对用户密码进行MD5加密,或者是单向...
md5 16位加密 java_MD5加密,MD5在线加密,MD5校验
MD5加密 MD5在线加密 MD5校验MD5加密工具请在下面输入需要MD5加密的字符串16位大写: (双击复制)16位小写: (双击复制)32位大写: (双击复制)32位小写: (双击复制)MD5加密算法介绍 (查看全文)在一些初始化处理后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。首先填充消息使其长...
java中md5加密_JAVA中使用MD5加密实现密码加密
1.新建Md5.javapackage com.loger.md5;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import sun.misc.BASE64Encoder;public clas...
1694



被折叠的 条评论
为什么被折叠?



