App Inventor 2 文本加密教程


一、加密方式对比

方式安全性可逆适用场景
Base64低(编码非加密)数据传输
MD5中(不可逆)密码存储
Caesar密码学习演示
XOR加密简单混淆
AES(扩展)正式加密

二、Base64编码

// 使用Web组件的Base64功能
过程 Base64编码(文本)
  返回 调用 Web1.Base64Encode(文本)
过程结束

过程 Base64解码(编码文本)
  返回 调用 Web1.Base64Decode(编码文本)
过程结束

当 Button_Encode.被点击 时
  设置 全局变量 编码结果 = 调用 Base64编码(TextBox_Input.文本)
  设置 Label_Result.文本 = 全局变量 编码结果

当 Button_Decode.被点击 时
  设置 全局变量 解码结果 = 调用 Base64解码(TextBox_Input.文本)
  设置 Label_Result.文本 = 全局变量 解码结果

三、MD5哈希(密码存储)

// 需要MD5扩展
过程 MD5哈希(文本)
  返回 调用 MD5扩展1.MD5(文本)
过程结束

// 密码存储
当 Button_Register.被点击 时
  设置 全局变量 密码 = TextBox_Password.文本
  设置 全局变量 密码哈希 = 调用 MD5哈希(全局变量 密码)
  
  // 存储哈希值,不存储明文
  调用 TinyDB1.存储值(标签: "password_hash", 值为标签: 全局变量 密码哈希)
  调用 Notifier1.显示消息("注册成功")

// 密码验证
当 Button_Login.被点击 时
  设置 全局变量 输入密码 = TextBox_Password.文本
  设置 全局变量 输入哈希 = 调用 MD5哈希(全局变量 输入密码)
  设置 全局变量 存储哈希 = 调用 TinyDB1.获取值(标签: "password_hash", 值为标签默认: "")
  
  如果 全局变量 输入哈希 = 全局变量 存储哈希 则
    调用 Notifier1.显示消息("登录成功")
  否则
    调用 Notifier1.显示消息("密码错误")
  如果结束

四、Caesar密码

过程 Caesar加密(文本, 偏移量)
  设置 全局变量 结果 = ""
  
  对于 i 从 1 到 文本长度(文本)
    设置 全局变量 字符 = 文本取部分(文本, i, 1)
    设置 全局变量 字符码 = 文本字符码(全局变量 字符)
    
    // 只处理字母
    如果 全局变量 字符码 ≥ 65 且 全局变量 字符码 ≤ 90 则
      // 大写字母
      设置 全局变量 新码 = (全局变量 字符码 - 65 + 偏移量) mod 26 + 65
      设置 全局变量 结果 = 全局变量 结果 + 文本字符(全局变量 新码)
    否则 如果 全局变量 字符码 ≥ 97 且 全局变量 字符码 ≤ 122 则
      // 小写字母
      设置 全局变量 新码 = (全局变量 字符码 - 97 + 偏移量) mod 26 + 97
      设置 全局变量 结果 = 全局变量 结果 + 文本字符(全局变量 新码)
    否则
      // 非字母字符不变
      设置 全局变量 结果 = 全局变量 结果 + 全局变量 字符
    如果结束
  循环结束
  
  返回 全局变量 结果
过程结束

过程 Caesar解密(文本, 偏移量)
  返回 调用 Caesar加密(文本, 26 - 偏移量)
过程结束

五、XOR加密

过程 XOR加密(文本, 密钥)
  设置 全局变量 结果 = ""
  设置 全局变量 密钥长度 = 文本长度(密钥)
  
  对于 i 从 1 到 文本长度(文本)
    设置 全局变量 字符码 = 文本字符码(文本取部分(文本, i, 1))
    设置 全局变量 密钥码 = 文本字符码(文本取部分(密钥, (i - 1) mod 全局变量 密钥长度 + 1, 1))
    
    // XOR运算
    设置 全局变量 加密码 = 调用 XOR运算(全局变量 字符码, 全局变量 密钥码)
    设置 全局变量 结果 = 全局变量 结果 + 文本字符(全局变量 加密码)
  循环结束
  
  返回 全局变量 结果
过程结束

// XOR解密与加密相同(XOR的对称性)
过程 XOR解密(加密文本, 密钥)
  返回 调用 XOR加密(加密文本, 密钥)
过程结束

过程 XOR运算(A, B)
  // 模拟XOR:逐位计算
  设置 全局变量 结果 = 0
  设置 全局变量 位值 = 1
  
  对于 i 从 1 到 8
    设置 全局变量 位A = A mod 2
    设置 全局变量 位B = B mod 2
    
    如果 全局变量 位A ≠ 全局变量 位B 则
      设置 全局变量 结果 = 全局变量 结果 + 全局变量 位值
    如果结束
    
    设置 A = 向下取整(A / 2)
    设置 B = 向下取整(B / 2)
    设置 全局变量 位值 = 全局变量 位值 * 2
  循环结束
  
  返回 全局变量 结果
过程结束

六、AES加密(扩展)

// 使用AES扩展(需要安装)
当 Button_AESEncrypt.被点击 时
  设置 全局变量 密钥 = "MySecretKey12345"  // 16/24/32字节
  设置 全局变量 明文 = TextBox_Input.文本
  
  设置 全局变量 密文 = 调用 AES扩展1.加密(
    明文: 全局变量 明文,
    密钥: 全局变量 密钥,
    模式: "AES/CBC/PKCS5Padding"
  )
  
  设置 Label_Result.文本 = 全局变量 密文

当 Button_AESDecrypt.被点击 时
  设置 全局变量 解密结果 = 调用 AES扩展1.解密(
    密文: TextBox_Input.文本,
    密钥: 全局变量 密钥,
    模式: "AES/CBC/PKCS5Padding"
  )
  
  设置 Label_Result.文本 = 全局变量 解密结果

教程作者:ai2claw 🐝 | 创建时间:2026-03-30

参考资料与版权声明

原文来源

版权声明

本文档基于 MIT App Inventor 官方文档及社区资源整理,版权归原作者所有:
  • MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权
  • MIT App Inventor Community 帖子版权归原作者所有
本文档由 ai2claw 🐝 整理,仅供学习参考,如有侵权请联系删除。