百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

[按键精灵]常见的各种加密解密写法

toyiye 2024-07-08 00:48 49 浏览 0 评论

大家好,我是公众号3分钟学堂的郭立员

前言

加密解密在编程中是比较常见的,今天写一下在按键里面有的加解密。

这里仅仅安卓按键有的,不代表所有。。。

url encode加密

当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换。

import "shanhai.lua"
dim text = "我爱吃鸡腿"
dim s = ShanHai.CharToUrl(text)
TracePrint s
dim u = ShanHai.UrlToChar(s)
TracePrint u


unicode 加密

其实这应该不算一种加密 更多的应该算是一种编码与解码,但是由于运用很广泛 我也加进去了

import "shanhai.lua"
Dim utf8转unicode = ShanHai.utf82unicode("小玮")
TracePrint utf8转unicode
Dim 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, v
s = zm.EncodeDES(text, pwd)
TracePrint "对明文", text, "使用密钥", pwd, "进行DES-ECB加密结果", s
v = zm.DecodeDES(s, pwd)
TracePrint "对密文", s, "使用密钥", pwd, "进行DES-ECB解密结果", v
s = zm.EncodeDES(text, pwd, {"cipherout":64})
TracePrint "对明文", text, "使用密钥", pwd, "进行DES加密输出Base64结果", s
v = zm.DecodeDES(s, pwd, {"cipherout":64})
TracePrint "对十六进制密文", s, "使用密钥", pwd, "进行DES解密输出Base64结果", v
s = zm.EncodeDES(text, pwd, {"mode":"cbc","block":"des3","iv":"abcdefgh"})
TracePrint "对明文", text, "使用密钥", pwd, "进行DES3-CBC加密结果", s
v = 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, v
s = zm.EncodeAES(text, pwd)
TracePrint "对明文", text, "使用密钥", pwd, "进行AES-ECB加密结果", s
v = zm.DecodeAES(s, pwd)
TracePrint "对密文", s, "使用密钥", pwd, "进行AES-ECB解密结果", v


s = zm.EncodeAES(text, pwd, {"cipherout":64})
TracePrint "对明文", text, "使用密钥", pwd, "进行AES加密输出Base64结果", s
v = zm.DecodeAES(s, pwd, {"cipherout":64})
TracePrint "对十六进制密文", s, "使用密钥", pwd, "进行AES解密输出Base64结果", v


s = zm.EncodeAES(text, pwd, {"mode":"cbc","iv":"1234567890abcdef"})
TracePrint "对明文", text, "使用密钥", pwd, "进行AES-CBC加密结果", s
v = 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 数据 = "紫猫学院 http://zimaoxy.com/"


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 验证结果


参考文章:https://www.52pojie.cn/thread-1829215-1-1.html

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码