xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string;
varidmd5: TIdHashMessageDigest5;
beginidmd5 := TIdHashMessageDigest5.Create;tryresult := idmd5.HashStringAsHex(texto);finallyidmd5.Free;end;
end;

c++builder
#include <IdHashMessageDigest.hpp>String __fastcall MD5(const String texto)
{String result;TIdHashMessageDigest5 *idmd5= new TIdHashMessageDigest5();try{result= idmd5->HashStringAsHex(texto,IndyTextEncoding_UTF8());//IndyTextEncoding_UTF8()可忽略}__finally{delete idmd5;}return result;
}


texto是汉字有bug,中国:EA03FCB8C47822BCE772CF6C07D0EBBB北京:EA03FCB8C47822BCE772CF6C07D0EBBB这2个串是相等的啊!!,难道xe6的HashStringAsHex方法有问题?最终原因是加上参数IndyTextEncoding_UTF8()就可以了。字符编码不正确。
  • BASE64
XE6的base64编码与xe7不同,区别在于对汉字的处理,汉字的编码值不一样。XE7:move base64 function to System.NetEncoding.hppSoap::Encddecd::EncodeString默认是UnicodeString,汉字也是Unicode再进行编码。XE6:EncodeString默认是AnsiString,汉字也是按ascii码进行b64编码的。所以xe6、xe7对汉字的b64编码不一样。

在XE7里如果用旧的ascii编码方式,可以调用AnsiString __fastcall EncodeBase64(const void * Input, int Size)函数实现。
    String ustring = Memo1->Text;AnsiString as = AnsiString(ustring);Memo2->Text = Soap::Encddecd::EncodeBase64(as.c_str(), as.Length());

XE里没有idbase64decoder控件了。

Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因。

Berlin,XE7 base64,2016.10.8

xe7中对Encode重载了3种方法。

int __fastcall Encode(TStream*  Input, TStream*  Output)/* overload */;
DynamicArray<Byte> __fastcall Encode(Byte  *Input,  int Input_High)/* overload */;
UnicodeString __fastcall Encode( UnicodeString Input)/* overload */;

   LEncoder := TBase64Encoding.Create(0);Result :=  LEncoder.Encode('hello');

#include <System.NetEncoding.hpp>

Memo2->Text = TNetEncoding::Base64->Encode(Memo1->Text);

Memo1->Text = TNetEncoding::Base64->Decode(Memo2->Text);

To encode:

bytes: TBytes;base64 :String;
bytes := TEncoding.UTF8.GetBytes(str);
base64 := TNetEncoding.Base64.EncodeBytesToString(bytes);

use String typeb64:=  TNetEncoding.Base64.Encode(astr);

To decode:

bytes := TNetEncoding.Base64.DecodeStringToBytes(base64);
str := TEncoding.UTF8.GetString(bytes);

c++

TBytes bytes;//TByteDynArray bytes;

TNetEncoding::Base64->EncodeBytesToString(&bytes[0], bytes.High);

Soap.EncdDecd.pas

XE 自带的 MD5 单元 MessageDigest_5.pas

这个单元提供两套四个公开函数:

对流的编解码:
procedure EncodeStream(Input, Output: TStream); // 编码
procedure DecodeStream(Input, Output: TStream); // 解码

// 对字符串的编解码:
function EncodeString(const Input: string): string; // 编码
function DecodeString(const Input: string): string; // 解码

这几个函数在帮助中没有。应该不算是标准库中的函数。

c++builder

#include <EncdDecd.hpp>

Soap::Encddecd::EncodeString( edtkl->Text);

String es=Soap::Encddecd::EncodeString("ee");

Soap::Encddecd::EncodeString(es);

http://codeverge.com/embarcadero.delphi.tools/indy-tidhashmessagedigest5-changed-f/1061390

根据RFC822规定,每76个字符,还需要加上一个回车换行

如果不用换行符,自己创建类,用MaxInt

TBase64Encoding *b64e=new TBase64Encoding(MaxInt);
mmoBase->Text = b64e->EncodeBytesToString(&bta[0], bta.High);
delete b64e;

New Unit for Web Encoding and Decoding

The RTL provides a new unit, System.NetEncoding, that provides encoding and decoding features for Base64, HTML, and URL.

The following table shows how methods from previous versions of RAD Studio map to methods in System.NetEncoding:

HTTPEncode、URLEncode、URL编码

HZ=HTTPEncode( "查询功能");//解决在中文汉字编码URL地址乱码的问题

比如TIdHTTP.Get(URL,stream);这个URL里含有汉字需要转换一下

XE6 XE7

Soap.EncdDecd.EncodeBase64

TNetEncoding.Base64.EncodeBytesToString

Soap.EncdDecd.DecodeBase64

TNetEncoding.Base64.DecodeStringToBytes

Soap.EncdDecd.EncodeStream
Soap.EncdDecd.EncodeString

TNetEncoding.Base64.Encode

Soap.EncdDecd.DecodeStream
Soap.EncdDecd.DecodeString

TNetEncoding.Base64.Decode

Web.HTTPApp.HTMLEncode

TNetEncoding.HTML.Encode

Web.HTTPApp.HTMLDecode

TNetEncoding.HTML.Decode

Web.HTTPApp.HTTPEncode

TNetEncoding.URL.Encode

Web.HTTPApp.HTTPDecode

TNetEncoding.URL.Decode

c++Builder XE6 MD5 加密算法 BASE64 URL 编码相关推荐

  1. URL编码 - Java加密与安全

    JAVA的URL编码我们先看看什么是编码?ASCII码就是一种编码,A的编码是16进制的0x41,字母B的编码是0x42,而中文的中是用Unicode编码,中就是0x4e2d,用UTF-8编码,需要3 ...

  2. 认证过程中常用的加密算法MD5、Base64

    在编程过程中,MD5加密算法和Base64编码都是十分常用的,那么MD5和Base64编码有什么作用和区别呢? 一.MD5 1)什么是MD5? MD5消息摘要算法(英语:MD5 Message-Dig ...

  3. Vue项目:路由跳转时中文传参被URL编码,怎么解决?用js封装Base64编码解码加密解密

    1.在utils中封装js方法,代码如下: var Base64 = { ​// private property_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZab ...

  4. URL编码和Base64编码

    URL编码和Base64编码 前言 一.URL编码 1. URLEncoder和URLDecoder 2. URL编码规则 3. Javascript 原生提供三对 Url编码 的函数 3.1 三对函 ...

  5. 编码算法(URL编码和Base64编码)

    URL编码: URL 编码是浏览器发送数据给服务器时使用的编码,它通常附加在 URL 的参数部 分,例如: https://www.baidu.com/s?wd=%E4%B8%AD%E6%96%87. ...

  6. Base64和URL编码

    URL为什么使用百分号编码(URL编码) 1.一些数据(二进制串)无法在URL中使用字符表示(以US-ASCII字符集举例,其中的一些 字符 并不能显示的表示出来,如响铃) 2.传输的字符是URL中保 ...

  7. 简单、生动漫画讲述什么是MD5加密算法(转载,resource url见文末)

    本文将通过漫画的形式来通俗易懂的讲述什么是MD5加密算法(Message Digest Algorithm MD5(中文名为消息摘要算法第五版)),MD5加密算法的底层原理以及MD5加密算法的破解算法 ...

  8. Base64的编码实现原理攻略

    Base64的编码原理 本文将实现: 简述 ASCII码字符编码的Base64 编码实现原理 简述 非ASCII码字符编码的Base64 编码实现原理 加密分析系列文章: Base64 编码实现原理( ...

  9. MD5加密算法原理及一些其他的加密算法

    Md5加密算法: 概述:md5算法也可以称为消息摘要算法,属于hash算法的一种,md5算法对输入的任意长度的消息进行运行,然后产生一个128位的消息摘要 特点: #不可逆性 唯一性:相同数据的md5 ...

最新文章

  1. 智源深度 | NLP 面临的三大真实挑战(含视频)
  2. docker 容器中yum网速慢报错 Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds 解决方法
  3. 【Ubuntu入门到精通系列讲解】系统信息相关命令
  4. 软件测试入门三年经验
  5. ActionBarDisplayOptions展示选项的菜单
  6. 使用UAA OAuth2授权服务器–客户端和资源
  7. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之程序运行
  8. 另一种思路比较2个日期是否相等的方式
  9. JQuey中 attr('checked', true)设置状态只有第一次有用
  10. win10安装misql8_Windows10下安装MySQL8.0
  11. 风控模型及特征的上线部署方法
  12. 人间真实:程序员的 60 个崩溃瞬间!
  13. 2020秋招CV面试知识点汇总
  14. c语言中Oo是什么进制整数字,C语言中的大小端存储及原码补码反码的运算关系 %d %u...
  15. 简单的抓包_学习笔记
  16. ESP32使用SDIO接口注意事项
  17. ios备份应用数据_如何在iOS设备之间备份和复制数据
  18. linux mtd 命令,Linux MTD介绍
  19. ATL SERVER
  20. 数据结构算法常见的 100 道面试题全解析:2019 版

热门文章

  1. idea如何导出war文件
  2. Win32字符串处理函数
  3. springcloud 文件服务器,SpringCloud传文件
  4. 图的存储结构matlab,matlab存储 一幅图像的的函数为( )
  5. 机器学习实践:TensorFlow最后一个epoch训练损失函数显著增大
  6. 机器学习:线性回归I 最小二乘法
  7. 业界盘点|为什么推荐算法都开始结合图神经网络了?
  8. 【机器学习基础】撒花!李宏毅机器学习 2021 版正式开放上线
  9. 科普 | 一文完全理解AUC-ROC曲线
  10. Github标星66.6k+:常见数据结构与算法的Python实现