前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对接其它平台,AES加密算法怎么搞,教你一招验证大法

对接其它平台,AES加密算法怎么搞,教你一招验证大法

作者头像
加菲猫的VFP
发布2021-08-16 15:19:42
9770
发布2021-08-16 15:19:42
举报
文章被收录于专栏:加菲猫的VFP

昨天在对接实名制管理平台时,再次遇到加密算法的问题,想了想还是写篇文章沉淀下来。

可以看到这里写了AES加密--高级加密标准(AES,Advanced Encryption Standard),还附有算法说明。加密算法,我们狐友在对接其它语言开发的接口就一定会遇到。那是加菲猫来讲讲怎么做这种对接接口加密。

它是一种对称加密算法。何谓对称,对称就是加密和解密用的密钥是相同的,就像家里的门,各把钥匙的是一样的,就可以打开这个门,所以钥匙千万不能丢。

做加密算法,最重要的是验证加密后的结果对不对,所以我们要找到验证的方法。

加菲猫在找到一个可以做验证的网站。

http://tool.chacuo.net/cryptaes

可以看到选项很多,看起来复杂。

AES加密模式有多种:ECB\CBC\OFB\CTR\CFB,上方的文档写的是CBC。

文档中的数据块就是PKCS7模式,就对应上图的填充选项。

BLOCKSIZE 128就是指数据块128位。

字符集是UTF-8,如果涉及到中文,就要更改页面中的字符集。

密码和偏移量IV在文档都会给到。

输出是BASE64编码。

于是我们就可以试试这个加密工具了。

加密模式 CBC ,填充PKCS7,数据块128位,密码:0123456789ABCDEF,偏移量:0123456789ABCDEF

接下来用VFP来做加密。

加菲猫找到一个非常好用的FLL类库,里面封装了非常多的加密算法。

代码语言:javascript
复制
 lccorpstr=Strconv("加菲猫的VFP",9)  &&要转UTF8
lcappsecret="0123456789ABCDEF"
Set Library To vfpencryption71.fll Additive
lcIv=lcappsecret
lcAES=Encrypt(lccorpstr,lcappsecret, 0, 1, 2, Len(lcappsecret), 16, m.lcIV)
lccorpsign=Strconv(lcAes,13)   &&输出结果要转BASE64
Release Library vfpencryption71
?lccorpsign

输出

代码语言:javascript
复制
+Qp/RA1zU6wB4NjmZ/YMWg==

返回值:

字符型 - cStringtoEncrypt 的加密版本。

结果一致,加密算法没问题,可以进入正式开发了。

Encrypt函数有很多参数,都是对应页面中的那些选项,具体大家看文档了。

函数:ENCRYPT()

声明: Encrypt(cStringtoEncrypt, cSecretKey[, nEncryptionType[, nEncryptionMode[, nPaddingType[, nKeySize[, nBlockSize[, cIV]]]]]])

参数:

cStringtoEncrypt - 你想加密的明文字符串,例如“Hello World!”。

cSecretKey - 你想在加密过程中使用的明文字符串 Key,例如“My_SeCrEt_KeY”。请注意,key 针对特殊的加密类型或许需要特定的长度。更多信息请参看后面的内容。

nEncryptionType - 共有5种可用的加密方式。这个参数的值用来确定使用哪种类型,并且确定 Secret Key 的长度。在 Visual FoxPro 中,一个单字符等于 1 字节(或 8 位)。所以,一个加密算法如果需要一个 128 位的 Key ,那么就需要 Secret Key 是一个具有16个字符的字符串(16 x 8 = 128)。 0 = AES128 (需要一个 16 个字符的Key) 1 = AES192 (需要一个 24 个字符的Key) 2 = AES256 (需要一个 32 个字符的Key) *参数的默认值 4 = Blowfish (需要一个 56 个字符的Key) 8 = TEA (需要一个 16 个字符的Key) 1024 = RC4 (Key 可以是任意长度)

nEncryptionMode - 针对上面列出的加密类型一共有三种可用模式。它们是:Electronic Code Book (ECB)、Cipher Block Chaining (CBC) 和 Cipher Feedback Block (CFB) 。参数nEncryptionMode 不能应用于 RC4 加密(nEncryptionType = 1024)。

0 = ECB *参数默认值 1 = CBC 2 = CFB

3 = OFB

nPaddingType填充模式

0 = Zeroes (NULLs) *Default

1 = Spaces (blanks)

2 = PKCS7

3 = ANSI X.923

4 = ISO 10126

nKeySize - 密钥长度

nBlockSize - 填充长度

cIV - 偏移量

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档