前言:
现时小伙伴们对“编程实现des算法的加密解密过程是”可能比较看重,各位老铁们都想要学习一些“编程实现des算法的加密解密过程是”的相关资讯。那么小编同时在网摘上收集了一些关于“编程实现des算法的加密解密过程是””的相关文章,希望我们能喜欢,你们一起来学习一下吧!大家好,我是公众号3分钟学堂的郭立员
前言
加密解密在编程中是比较常见的,今天写一下在按键里面有的加解密。
这里仅仅安卓按键有的,不代表所有。。。
url encode加密
当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换。
import "shanhai.lua"dim text = "我爱吃鸡腿"dim s = ShanHai.CharToUrl(text)TracePrint sdim u = ShanHai.UrlToChar(s)TracePrint u
unicode 加密
其实这应该不算一种加密 更多的应该算是一种编码与解码,但是由于运用很广泛 我也加进去了
import "shanhai.lua"Dim utf8转unicode = ShanHai.utf82unicode("小玮")TracePrint utf8转unicodeDim unicode转utf8 = ShanHai.unicode2utf8("\\u5c0f\\u73ae")TracePrint unicode转utf8
Base64 加密
Base64 是一种用 64 个字符来表示任意二进制数据的方法。
import "shanhai.lua"Dim Base64加密=ShanHai.Base64En("按键精灵")TracePrint Base64加密Dim Base64解密=ShanHai.Base64De(Base64加密)TracePrint Base64解密
MD5加密
全称 MD5 消息摘要算法(英文名称:MD5 Message-Digest Algorithm),又称哈希算法、散列算法,由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于 1992 年作为 RFC 1321 被公布,用以取代 MD4 算法。摘要算法是单向加密的,也就是说明文通过摘要算法加密之后,是不能解密的。摘要算法的第二个特点密文是固定长度的,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。之所以叫摘要算法,它的算法就是提取明文重要的特征。所以,两个不同的明文,使用了摘要算法之后,有可能他们的密文是一样的,不过这个概率非常的低。
Dim a="我爱你"TracePrint Encode.Md5(a)
SHA加密
全称安全哈希算法(英文名称:Secure Hash Algorithm),由美国国家安全局(NSA)所设计,主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA),SHA 通常指 SHA 家族的五个算法,分别是 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,后四者有时并称为 SHA-2,SHA 是比 MD5 更安全一点的摘要算法,MD5 的密文是 32 位,而 SHA-1 是 40 位,版本越强,密文越长,代价是速度越慢。
Import "zm.luae" Dim s = "紫猫"TracePrint "sha1:", zm.EncodeSHA(s)TracePrint "sha224:", zm.EncodeSHA(s, "sha224")TracePrint "sha256:", zm.EncodeSHA(s, "sha256")
HMAC
全称散列消息认证码、密钥相关的哈希运算消息认证码(英文名称:Hash-based Message Authentication Code 或者 Keyed-hash Message Authentication Code),于 1996 年提出,1997 年作为 RFC 2104 被公布,HMAC 加密算法是一种安全的基于加密 Hash函数和共享密钥的消息认证协议,它要求通信双方共享密钥 key、约定算法、对报文进行 Hash 运算,形成固定长度的认证码。通信双方通过认证码的校验来确定报文的合法性。
Import "zm.luae" Dim m = "紫猫学院", key = "zimaoxy.com"Dim hmac = zm.EncodeHMAC(m, key)TracePrint "hmac-sha1签名的十六进制结果为:", hmac
DES
全称数据加密标准(英文名称:Data Encryption Standard),加密与解密使用同一密钥,属于对称加密算法,1977 年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),DES 是一个分组加密算法,使用 56 位的密钥(一般认为密钥是 64 位,但是密钥的每个第 8 位设置为奇偶校验位,所以实际上有效位只有 56 位),由于 56 位密钥长度相对较短,所以 DES 是不安全的,现在基本上已被更高级的加密标准 AES 取代。
mode 支持:CBC,CFB,CTR,CTRGladman,ECB,OFB 等。
padding 支持:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7 等。
Import "zm.luae" Dim text = "紫猫", pwd = "12345678"Dim s, vs = zm.EncodeDES(text, pwd)TracePrint "对明文", text, "使用密钥", pwd, "进行DES-ECB加密结果", sv = zm.DecodeDES(s, pwd)TracePrint "对密文", s, "使用密钥", pwd, "进行DES-ECB解密结果", vs = zm.EncodeDES(text, pwd, {"cipherout":64})TracePrint "对明文", text, "使用密钥", pwd, "进行DES加密输出Base64结果", sv = zm.DecodeDES(s, pwd, {"cipherout":64})TracePrint "对十六进制密文", s, "使用密钥", pwd, "进行DES解密输出Base64结果", vs = zm.EncodeDES(text, pwd, {"mode":"cbc","block":"des3","iv":"abcdefgh"})TracePrint "对明文", text, "使用密钥", pwd, "进行DES3-CBC加密结果", sv = zm.DecodeDES(s, pwd, {"mode":"cbc","block":"des3","iv":"abcdefgh"})TracePrint "对十六进制密文", s, "使用密钥", pwd, "进行DES3-CBC解密结果", v
AES
全称高级加密标准(英文名称:Advanced Encryption Standard),在密码学中又称 Rijndael 加密法,由美国国家标准与技术研究院 (NIST)于 2001 年发布,并在 2002 年成为有效的标准,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES,已经被多方分析且广为全世界所使用,它本身只有一个密钥,即用来实现加密,也用于解密。
mode 支持:CBC,CFB,CTR,CTRGladman,ECB,OFB 等。
padding 支持:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7 等。
Import "zm.luae" Dim text = "紫猫", pwd = "m.zimaoxy.com"Dim s, vs = zm.EncodeAES(text, pwd)TracePrint "对明文", text, "使用密钥", pwd, "进行AES-ECB加密结果", sv = zm.DecodeAES(s, pwd)TracePrint "对密文", s, "使用密钥", pwd, "进行AES-ECB解密结果", vs = zm.EncodeAES(text, pwd, {"cipherout":64})TracePrint "对明文", text, "使用密钥", pwd, "进行AES加密输出Base64结果", sv = zm.DecodeAES(s, pwd, {"cipherout":64})TracePrint "对十六进制密文", s, "使用密钥", pwd, "进行AES解密输出Base64结果", vs = zm.EncodeAES(text, pwd, {"mode":"cbc","iv":"1234567890abcdef"})TracePrint "对明文", text, "使用密钥", pwd, "进行AES-CBC加密结果", sv = zm.DecodeAES(s, pwd, {"mode":"cbc","iv":"1234567890abcdef"})TracePrint "对十六进制密文", s, "使用密钥", pwd, "进行AES-CBC解密结果", v
RSA
英文名称:Rivest-Shamir-Adleman,是 1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,RSA 就是他们三人姓氏开头字母拼在一起组成的,RSA 加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。它被普遍认为是目前比较优秀的公钥方案之一。RSA是第一个能同时用于加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击。
Import "zm.luae" '通过一些网站或其他方式生成RSA公钥与私钥, 请勿照抄例子的密钥对Dim 数据 = "紫猫学院 ;Dim 公钥 = "-----BEGIN PUBLIC KEY-----\n" &_"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6tcUS8HFLG1fSthJwMvQsMbsY\n" &_"2sSqTpSTfHrJzF9mVa/O6fLAZWMuWpi1QBWFy6GDDONMn5Rw0Dkg9jG3Okxojxqu\n" &_"2bZnXflW6FbuDPG1kWj80DNuKXmGKQ3HpqLuk89Zn3LjS0jAYAQM2Z/Xdad+JM4u\n" &_"9peQQ8WwiTff7rj6owIDAQAB\n" &_"-----END PUBLIC KEY-----\n"Dim 私钥 = "-----BEGIN PRIVATE KEY-----\n" &_"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALq1xRLwcUsbV9K2\n" &_"EnAy9CwxuxjaxKpOlJN8esnMX2ZVr87p8sBlYy5amLVAFYXLoYMM40yflHDQOSD2\n" &_"Mbc6TGiPGq7Ztmdd+VboVu4M8bWRaPzQM24peYYpDcemou6Tz1mfcuNLSMBgBAzZ\n" &_"n9d1p34kzi72l5BDxbCJN9/uuPqjAgMBAAECgYBrIM5xvnoS0R6D7SoJLINDNEmY\n" &_"yjVbTnkbYqoFTXlTe0jDnSJG2CWfPCYwoRN4UE1cpzFoDowaaq7MxdXivtWFkbIw\n" &_"D1nxLexZ85ocNb5NSKIIh76THttZJtqkN42F1mJyaPjtTrv1HEpAzcE0NApNWsoa\n" &_"vTRwAsJn/RQtASbSeQJBAOQUasteKjTwKG32y617eP1YKLlN2Yur0ovpty8gUf9g\n" &_"3wPDxUp3jpTK/8hhOdHf44I9c+daC4Tir73mebsie28CQQDRkOerEiWzce4G/mFE\n" &_"EeaPZm5FX8OYY1O6omf2JaAyCnbol2O4Ffn5P8GZ2mxXc79j/zvpbXqs4jVSOTk7\n" &_"j6oNAkBgPLE3MHt0rOUSSTF1+QR7OaitT8j8YzrK6Inv655NuI1BZGip3DqgU+uL\n" &_"nGKuSN8RhGaUdu0nXBM1eLtil9EnAkEAzjB1T+LWBz1kRatJRfEa2SKeAlHbn3ay\n" &_"7eFWyl9ww2t6XRR+v6OXxH3PXTIEAPNYbum0J9JYrfsPHWxB/HE4jQJAeZCtTRUQ\n" &_"Kw699c31ERDde8l8wgO7j+VHvxcvabk+IGA6ktM6Z/Hsiy2Y2TZ+kwM6vIdftJPs\n" &_"XdiEBtyEVQFQig==\n" &_"-----END PRIVATE KEY-----\n"Dim 签名结果 = zm.EncodeRsaSign(数据, 私钥)TracePrint 签名结果Dim 验证结果 = zm.EncodeRsaVerifySign(数据, 签名结果, 公钥)TracePrint 验证结果
参考文章:
标签: #编程实现des算法的加密解密过程是