20分求助:AES加密,去除特殊符号,只有字母和数字

therealsun 2015-03-14 02:29:29
本人想用AES加密,加密后只有字母和数字,怎么样才能实习啊?
以下是我目前用的:

private static byte[] Keys = { 0x00, 0xxx, 0xa, 08x, 0x0, 0x12, 0x24, 0xc, 0xa, 0x8, 0x8, 0x23, 0xb, 0xa, 0x1, 0x12 };
/// <summary>AES加密字符串</summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="encryptKey">加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public static string Encode(string encryptString, string encryptKey)
{
encryptKey = XString.GetSubString(encryptKey, 32, "");
encryptKey = encryptKey.PadRight(32, ' ');
RijndaelManaged rijndaelProvider = new RijndaelManaged();
rijndaelProvider.Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 32));
rijndaelProvider.IV = Keys;
ICryptoTransform rijndaelEncrypt = rijndaelProvider.CreateEncryptor();
byte[] inputData = Encoding.UTF8.GetBytes(encryptString);
byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData,0,inputData.Length);
return Convert.ToBase64String(encryptedData);
}
...全文
7373 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-08-11
  • 打赏
  • 举报
回复
要么别用AES加密 要么把AES加密的结果再转数字
by_封爱 版主 2015-08-11
  • 打赏
  • 举报
回复
首先 你为啥要这样做呢? 如果有特殊符号或者斜杠对你的程序有什么影响吗? 如果非得要数字+字母 你这样好了 把你得到的字符串转换成byte[] 然后对应16进制的字符串加一起 肯定是数组+字母了.
Poopaye 2015-08-11
  • 打赏
  • 举报
回复 1
引用 1 楼 therealsun 的回复:
以上加密后有斜杠、百分号、等号。。。。 不要特殊符号,只要字母和数字结合
把return那一句话替换成
return BitConverter.ToString(encryptedData).Replace("-", "");
kuailebaobaowoaini 2015-08-11
  • 打赏
  • 举报
回复
$encrypted=str_replace('+','-',$encrypted); $encrypted=str_replace('/','_',$encrypted); $encrypted=str_replace('=','*',$encrypted); next decrypt $encipheredData=str_replace('-','+',$encipheredData); $encipheredData=str_replace('_','/',$encipheredData); $encipheredData=str_replace('*','=',$encipheredData); it will works
  • 打赏
  • 举报
回复
任何加密在内存中它就是一段byte[],这个你可以直接Convert.ToBase64(),出来的也就字符数字字符外加等号
本拉灯 2015-03-14
  • 打赏
  • 举报
回复 1
那你就不能转成Base64 你转成BytToString 用下面的方法


public static byte[] HexToBytes(string Hex)
		{
			int num = (int) Math.Round((double) (((double) Hex.Length) / 2));
			byte[] buffer = new byte[(num - 1) + 1];
			int num3 = num - 1;
			for (int i = 0; i <= num3; i++)
			{
				string s = Hex.Substring(i * 2, 2);
				buffer[i] = (byte) int.Parse(s, NumberStyles.HexNumber);
			}
			return buffer;
		}
			
		public static string BytesToHex(byte[] bytes)
		{
			StringBuilder builder = new StringBuilder();
			int num2 = bytes.Length - 1;
			for (int i = 0; i <= num2; i++)
			{
				builder.AppendFormat("{0:X2}", bytes[i]);
			}
			return builder.ToString();
		}


therealsun 2015-03-14
  • 打赏
  • 举报
回复
或者如何不出现斜杠也行啊
therealsun 2015-03-14
  • 打赏
  • 举报
回复
以上加密后有斜杠、百分号、等号。。。。 不要特殊符号,只要字母和数字结合
我将带领大家全面析HLS(M3U8),包括直播、点播、多码流、AES加密、切片、等。您将亲自动手来操练,搭建环境、学习理论,析总结:m3u8+Nginx+OpenSSL+FFmpeg具体包括包括如下:HLS直播协议详解FFmpeg+Nginx+VLC打造M3U8点播FFmpeg+Nginx+VLC打造M3U8直播FFmpeg:M3U8的多码流自适应Win10快速安装OpenSSL(不用编译源码)FFmpeg:M3U8的AES加密 -------------------------------------------------------------------音视频是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。 目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧