uni-app x 纯原生跨平台 APP Android SHA256 算法

源码

实现步骤

  1. 选中项目新建uni_modules目录,如果目录已经存在,客户忽略
  2. 选中uni_modules目录新建uni_modules插件
  3. 输入插件ID(如:xuxiaowei-sha),选择UTS插件-API插件


  4. uni_modules/xuxiaowei-sha/utssdk/interface.uts 增加接口
    /* SHA256Hex 同步函数定义 */
    export type SHA256HexSync = (input : string) => string
    /* SHA256Base64 同步函数定义 */
    export type SHA256Base64Sync = (input: string) => string
    
  5. uni_modules/xuxiaowei-sha/utssdk/app-android/index.uts 增加实现
    import MessageDigest from "java.security.MessageDigest"
    // import HexFormat from "java.util.HexFormat";
    import Base64 from "java.util.Base64"
    
    import { SHA256HexSync, SHA256Base64Sync } from '../interface.uts';
    
    export const sha256Hex : SHA256HexSync = function (text : string) : string {
      if (text == '') {
        return ''
      }
      const digest = MessageDigest.getInstance('sha256');
      const digestBytes = digest.digest(text.toByteArray());
      // 鸿蒙 4.0.0 不支持使用 HexFormat(鸿蒙 4.0.0 还属于安卓)
      // return HexFormat.of().formatHex(digestBytes);
      return digestBytes.toHexString()
    }
    
    export const sha256Base64 : SHA256Base64Sync = function (text : string) : string {
      if (text == '') {
        return ''
      }
      const digest = MessageDigest.getInstance('sha256');
      const digestBytes = digest.digest(text.toByteArray());
      return Base64.getUrlEncoder().withoutPadding().encodeToString(digestBytes);
    }
    
  6. pages/index/index.uvue 增加代码测试 SHA256
    1. view
        <view style="margin-top: 20px; padding: 0 20px;">
           <input class="sha-input" placeholder="请输入内容,计算 SHA256" v-model="value" />
        </view>
        <view style="padding: 20px;">
            <view class="result-box">
                <view class="result-item">
                    <text class="result-label">SHA256 Hex:</text>
                    <text class="result-value">{{sha256HexResult}}</text>
                </view>
                <view class="result-item" style="margin-top: 10px;">
                    <text class="result-label">SHA256 Base64:</text>
                    <text class="result-value">{{sha256Base64Result}}</text>
                </view>
            </view>
        </view>
      
    2. script
      import { sha256Hex, sha256Base64 } from '@/uni_modules/xuxiaowei-sha'
      
       const value = ref<string>('1')
       const sha256HexResult = ref<string>('')
       const sha256Base64Result = ref<string>('')
       
       // 计算 SHA256 值
       const calculateSHA256 = () => {
           sha256HexResult.value = sha256Hex(value.value)
           sha256Base64Result.value = sha256Base64(value.value)
       }
       
       // 初始计算
       calculateSHA256()
       
       // 监听输入变化,实时计算
       watch(value, () => {
           calculateSHA256()
       })
      
    3. style
      .sha-input {
        width: 100%;
        height: 44px;
        border: 1px solid #ddd;
        border-radius: 8px;
        padding: 0 15px;
        font-size: 14px;
        background-color: #fff;
      }
      
      .result-box {
        border: 1px solid #ddd;
        border-radius: 8px;
        padding: 15px;
        background-color: #f9f9f9;
      }
      
      .result-item {
        width: 100%;
      }
      
      .result-label {
        font-size: 14px;
        color: #666;
        margin-bottom: 5px;
        display: block;
        font-weight: bold;
      }
      
      .result-value {
        font-size: 14px;
        color: #333;
        word-break: break-all;
        line-height: 1.5;
        background-color: #fff;
        padding: 10px;
        border-radius: 4px;
        border: 1px solid #eee;
      }
      
  7. 效果

    MD5 Hash Generator,Sha1 Hash Generator--Md5 decrypt online