数字信息摘要常见算法美码师

1.Hex编码将二进制数据按16进制转换为字符串,1字节=2个字符,编码后体积为2倍。

2.Base64由MIME规范定义的编码算法,其将3个字节(24位)编码为4个字符。字符集包括64个,可表示6二进制位的数据,因此一个字符对应一组6bit的数据。编码后体积约为4/3倍,针对不足位数用=补齐。

通常也称散列算法,是一种将任意长度的消息变成固定长度的消息摘要算法,不可逆;

1MD5MessageDigestAlgorithm5,流行度极高,但目前被发现存在碰撞冲突风险;任意长度输出为128bit=16字节摘要

2SHA1SHA指SecurityHashAlgorithm,由美国国家安全局NSA设计的安全散列算法系列;SHA1输出长度为160bit=20字节摘要

3SHA256继SHA1出现的算法(属于SHA-2类),安全性较SHA1更高;SHA256输出长度为256bit=32字节摘要。

MessageAuthenticationCode,消息认证码算法,基于HASH算法之上,增加了密钥的支持以提高安全性。具体算法包括HmacMD5/HmacSHA1/HmacSHA256等,输入包括数据及密钥,输出长度与HASH算法一致。密钥可以是任意长度的数据。

/***WriteabytearrayashexadecimalString.*/publicstaticStringbyteToHexString(byte[]bytes){returnString.valueOf(Hex.encodeHex(bytes));}/***TransformanhexadecimalStringtoabytearray.*/publicstaticbyte[]hexStringToByte(StringhexString){try{returnHex.decodeHex(hexString.toCharArray());}catch(DecoderExceptione){thrownewRuntimeException(e);}}//Hex来自common-codec扩展包//字节编码片段privatestaticfinalchar[]DIGITS_LOWER={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};/***@paramdata*abyte[]toconverttoHexcharacters*@returnAchar[]containinghexadecimalcharacters*@since1.4*/protectedstaticchar[]encodeHex(finalbyte[]data){finalintl=data.length;finalchar[]out=newchar[l<<1];//twocharactersformthehexvalue.for(inti=0,j=0;i>>4];out[j++]=DIGITS_LOWER[0x0F&data[i]];}returnout;}

/***EncodeaStringtobase64**@paramvalue*TheplainString*@returnThebase64encodedString*/publicstaticStringencodeBASE64(Stringvalue){try{returnnewString(Base64.encodeBase64(value.getBytes("utf-8")));}catch(UnsupportedEncodingExceptionex){thrownewRuntimeException(ex);}}/***Decodeabase64value**@paramvalue*Thebase64encodedString*@returndecodedbinarydata*/publicstaticbyte[]decodeBASE64(Stringvalue){try{returnBase64.decodeBase64(value.getBytes("utf-8"));}catch(UnsupportedEncodingExceptionex){thrownewRuntimeException(ex);}}

/***BuildanhexadecimalMD5hashforaString**@paramvalue*TheStringtohash*@returnAnhexadecimalHash*/publicstaticStringhexMD5(Stringvalue){try{MessageDigestmessageDigest=MessageDigest.getInstance("MD5");messageDigest.reset();messageDigest.update(value.getBytes("utf-8"));byte[]digest=messageDigest.digest();returnbyteToHexString(digest);}catch(Exceptionex){thrownewRuntimeException(ex);}}

static{//addbouncycastlesupportformd4etc..Security.addProvider(newBouncyCastleProvider());}/***初始化密钥**@paramtype*@return*/publicstaticStringinitHmacKey(MacTypetype){try{KeyGeneratorgenerator=KeyGenerator.getInstance(type.name());SecretKeysecretKey=generator.generateKey();byte[]key=secretKey.getEncoded();returnCodec.byteToHexString(key);}catch(Exceptione){thrownewRuntimeException(e);}}/***计算HMAC摘要**@paramdata*@paramkey*@paramtype*@return*/publicstaticStringcomputeHmac(byte[]data,Stringkey,MacTypetype){try{byte[]keydata=Codec.hexStringToByte(key);SecretKeysecretKey=newSecretKeySpec(keydata,type.name());Macmac=Mac.getInstance(secretKey.getAlgorithm());mac.init(secretKey);byte[]digest=mac.doFinal(data);returnCodec.byteToHexString(digest);}catch(Exceptione){thrownewRuntimeException(e);}}

maven依赖

org.bouncycastlebcprov-jdk15on1.54

THE END
1.计算机科学与技术数据结构算法软件工程人工智能大数据分析计算机科学与技术:未来世界的基石吗? 数据结构算法:信息处理的基石 在现代社会中,数据是无处不在的,它们流入我们的生活各个角落,从网络搜索到社交媒体,再到金融交易。然而,这些数据都是无意义的数字和字符,只有通过精心设计的算法和结构,我们才能从这些混乱中提取出有价值的信息。计算机科学与技术为我们提供了必要的https://www.hudnskdsz.cn/ke-yan-jin-zhan/601050.html
2.创源大讲堂浅谈编码理论与密码学研究摘要:编码理论与密码学是关系密切的研究领域,本报告将从历史发展和经典结果出发,通过基于编码的后量子密码学,浅谈编码里理论与密码学交叉研究的一些思路,并介绍编码理论和密码学的一些相关研究课题。 个人简介:王琦现任南方科技大学计算机科学与工程系研究员、深圳国家应用数学中心研究员,主要研究领域包括编码理论、密码学https://ift.swjtu.edu.cn/info/1035/8493.htm
3.编码理论:信息编码和传输的数学基础1.2. 编码理论的起源与发展 编码理论起源于20世纪40年代,香农在其开创性的论文《通信的数学理论》中首次提出了信息熵的概念,并奠定了信息论和编码理论的基础。此后,编码理论经历了快速的发展,涌现出许多重要的编码技术,例如线性分组码、卷积码、Turbo码等。 https://blog.csdn.net/2301_76268839/article/details/138263011
4.「视频编解码算法工程师招聘信息」BOSS直聘为您提供2024年视频编解码算法工程师信息,BOSS直聘在线开聊约面试,及时反馈,让视频编解码算法工程师更便捷,找工作就上BOSS直聘!https://www.zhipin.com/zhaopin/8fada5db0604349703193965/
5.双重信息编码遗传算法在选址模型中的应用AET摘要:在分析了一类配送中心选址问题的基础上,建立了该配送中心选址问题的数学模型。提出一种具有双重信息的遗传算法编码方案,并结合相应的遗传操作进行求寻优求解,最后通过实验证明了该方法的可行性和有效性。 关键词:双重信息;遗传算法;配送中心;模型 随着市场竞争的日益加剧,越来越多的企业认识到,如何合理地设立分销配http://www.chinaaet.com/article/185115
6.手指序列运动诱发脑电信息的编码范式与解码算法研究该结果验证了左右食指序列按键范式以及基于多类空间滤波算法与互信息分析的特征提取与筛选融合方法的可行性和有效性。综上,本文基于左右食指按键动作相继开展了重复按键与序列按键的离线和在线实验,利用基于空间滤波与互信息的特征提取与筛选方法实现了MRCP与ERD特征的有效提取、融合与分类,为提升运动相关思维脑电信息解码https://cdmd.cnki.com.cn/Article/CDMD-10056-1021721929.htm
7.智能信息检索——可变字节码的编码和解码算法实现51CTO博客《信息检索导论》部分实验python实现汇总请进入此博客查看。 1.实验目的 通过实验,掌握索引压缩的可变字节码VB的编码和解码算法。 2.实验任务与要求 检索系统中的倒排记录表所占空间巨大,因此索引压缩非常关键,可变字节码VB编码利用整数个字节对间距编码和解码,能够在时间和空间上达到一个非常好的平衡点。本实验通过编https://blog.51cto.com/u_16117037/6291969
8.《信息论与编码全部》课件.pptx循环码VS卷积码是一种动态纠错码,它将输入信息序列经过有限次的移位寄存器得到输出序列。详细描述卷积码具有较低的编码复杂度,且能够纠正突发错误。在实际应用中,卷积码通常与维特比算法相结合进行译码,以获得更好的纠错性能。卷积码在通信和数据存储领域得到了广泛应用。总结词卷积码04加密编码定义对称加密算法是指加密https://www.renrendoc.com/paper/305409658.html
9.通讯世界杂志中国科学技术信息研究所(ISTIC)主办关键词:数据挖掘 关联规则 apriori算法 编码 分类 Apriori等算法是数据挖掘中挖掘关联规则的著名算法.Apriori算法的主要思想为:通过限制候选产生发现频繁项集,由频繁项集产生关联规则.为了提高逐层产生频繁项集的效率,Apriori算法先对搜索空间进行压缩,利用了一条重要性质,即先验性质"频繁项集的所有非空子集也一定是https://www.youfabiao.com/txsj/201907/
10.面向深度学习的联合消息传递与自编码器自编码器全局收发机也面临明显的技术障碍,其中以下三个问题较为关键。 问题一:基于随机梯度下降法,使用反向传播算法训练自编码器,需要一个或多个可微信道模型层,用于连接发射机的深度神经层和接收机的深度神经层,如图4所示。由于真实信道必须包含很多非线性分量(如数字或模拟的预失真与转换),又涉及上采样、下采样等https://www.huawei.com/cn/huaweitech/future-technologies/joint-message-passing-autoencoder-deep-learning
11.TCCT通讯Newsletter2017No.01系统科学与数学, 2016 Vol. 36 (10): 1753-1761 Abstract | PDF 王一龙,高莹 构造线性广播和线性扩散网络编码的改进Jaggi-Sanders算法 系统科学与数学, 2016 Vol. 36 (10): 1762-1770 Abstract | PDF 韩银环,朴勇杰 2-度量空间上映射族的重合点和公共不动点定理的改进 系统科学与数学, 2016 Vol. 36https://tcct.amss.ac.cn/newsletter/2017/201701/journal.html
12.数据的编码与处理技术(精选八篇)1.1 CRC校验与算法原理 该原理的基本思想是基于线性编码理论, 发送端需传送的k位二进制码序列, 以一定的规则产生一个校验用的监督码 (即CRC码)r位, 并附在信息后边, 构成一个新的二进制码序列数共 (k+r) 位, 最后发送出去。接收端则根据信息码和CRC码之间的规则进行检验, 以确定传送数据是否出错。 https://www.360wenmi.com/f/cnkeyqxlqhqw.html
13.信息论与编码曹雪虹课后习题答案Word版信息论与编码-曹雪虹-课后习题答案Word版信息论与编码是一门涉及到通信与计算机科学的重要学科。通过对信息的量度、传送与处理,我们可以更好地理解信息在现代社会的重要性。下面我将针对曹雪虹所著的《信息论与编码》提供部分课后习题的参考答案,主要围绕信息量度、编码算法和信道编码等方面进行探讨。 信息量度 1. https://m.book118.com/html/2023/0611/8024114044005077.shtm