[Unity语音识别.续]用MD5加密作为用户的识别ID

本文介绍了在Unity中使用MD5加密作为用户识别ID的方法。MD5是一种单向加密技术,确保了ID的安全性。文章详细阐述了MD5算法的基本过程,包括字符串转byte数组、求余补长、分组以及复杂的数据变换步骤,以生成唯一的密文标识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.MD5是什么?

一种单向的加密方法,也就是说只有从明文到密文这一步,没有密文到明文这一步。

2.为什么用MD5呢?

作为识别ID,我们实际上并不需要知道它具体是多少,只需要保证两点,唯一的明文对着唯一密文,有高度的安全性,就行了。

3.MD5算法基本过程?

任意长度字符串输入->转化成byte数组->求余补长->分组->每组都做四轮数据变换->固定128位信息

4.第一步

将字符串转化为byte数组:

byte[] inputBytes = Encoding.Default.GetBytes (_input);
利用C#的Encoding里的方法即可。

5.第二步

求余补长:

1.求余,求余的目的是为了把每64个byte分成一组,也就是64*8=512个bit,512又将依据每32个的合成16个int,作为四轮数据变换的输入端。

2.当然,由于输入的字符串是任意长的,显然不能保证整除64之类的,所以我们必须对剩下的byte做补长,把他补成64位,补长规则是这样的:对于余数不足56位的,首先将他补至56位,补足规则是:填充1个1,N个0;对于56位以上的,补充规则都是一样的,总是将最后8位替换成byte数组的长度信息。

int byteLen = inputBytes.Length;
int []groups=null;
int groupCount=0;
groupCount=byteLen/64;
int rest=byteLen%64;
			byte [] tempBytes=new byte[64];
			if(rest<=56)
			{
				for(int i=0;i<rest;i++)
					tempBytes[i]=inputBytes[byteLen-rest+i];
				if(rest<56)
				{
					tempBytes[rest]=(byte)(1<<7);
					for(int i=1;i<56-rest;i++)
						tempBytes[rest+i]=0;
				}
				long len=(long)(byteLen<<3);
				for(int i=0;i<8;i++)
				{
					tempBytes[56+i]=(byte)(len&0xFFL);
					len=len>>8;
				}
				groups=divGroup(tempBytes,0);
				trans(groups);
			}
			else
			{
				for(int i=0;i<rest;i++)
					tempBytes[i]=inputBytes[byteLen-rest+i];
				long len=(long)(byteLen<<3);
				for(int i=0;i<8;i++)
				{
					tempBytes[56+i]=(byte)(len&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值