flutter属于前端还是后端(kotlin比较flutter)

尝试了网上多种库和教程都没办法互解,JAVA代码如下,求个大佬帮忙用dart(Flutter)实现一个可以互解的aes加密代码packagecom.example.lib;importjavax.crypto.Cipher;importjavax.crypto.spec.IvParameterSpec;importjavax.crypto.spec.SecretKeySpec;public…

大家好,又见面了,我是你们的朋友全栈君。

尝试了网上多种库和教程都没办法互解,JAVA代码如下,求个大佬帮忙用dart(Flutter)实现一个可以互解的aes加密代码package com.example.lib;

import javax.crypto.Cipher;

import javax.crypto.spec.IvParameterSpec;

import javax.crypto.spec.SecretKeySpec;

public class Test {

static String keyStr = “620F15CFDB5C79C34B3940537B21EDA072E22F5D7151456DEC3932D7A2B22C53”;

static String ivStr = “85D7D7DA41E22C1A66C9C1BFC70A1088”;

public static void main(String[] args) {

String haha = encrypt(“哈哈!你好。”);//B7488CC936D5FF626F50900F99CEB2E13D99

decrypt(haha);

}

static String encrypt(String content) {

try {

byte[] ivByte = hex2byte(ivStr);

byte[] key = hex2byte(keyStr);

Cipher cipher = Cipher.getInstance(“AES/CFB/NoPadding”);

SecretKeySpec keySpec = new SecretKeySpec(key, “AES”);

IvParameterSpec ivSpec = new IvParameterSpec(ivByte);

cipher.init(1, keySpec, ivSpec);

byte[] doFinal = cipher.doFinal(content.getBytes(“UTF-8”));

System.out.println(“doFinale:” + byte2hex(doFinal));

return byte2hex(doFinal);

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

static void decrypt(String content) {

try {

byte[] ivByte = hex2byte(ivStr);

byte[] contentByte = hex2byte(content);

byte[] key = hex2byte(keyStr);

Cipher cipher = Cipher.getInstance(“AES/CFB/NoPadding”);

SecretKeySpec keySpec = new SecretKeySpec(key, “AES”);

IvParameterSpec ivSpec = new IvParameterSpec(ivByte);

cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);

byte[] result = cipher.doFinal(contentByte);

System.out.println(new String(result, “UTF-8”));

} catch (Exception e) {

e.printStackTrace();

}

}

public static byte[] hex2byte(String str) {

if (str == null) {

return null;

}

int length = str.length();

if (length % 2 == 1) {

return null;

}

byte[] bArr = new byte[length / 2];

for (int i = 0; i != length / 2; i++) {

int j = i * 2;

bArr[i] = (byte) Integer.parseInt(str.substring(j, j + 2), 16);

}

return bArr;

}

public static String byte2hex(byte[] bArr) {

String str = “”;

for (byte b : bArr) {

String hexString = Integer.toHexString(b & 255);

str = hexString.length() == 1 ? str + “0” + hexString : str + hexString;

}

return str.toUpperCase();

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127422.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux开放8080端口命令_centos开放80端口

    linux开放8080端口命令_centos开放80端口1.添加映射iptables-tnat-APREROUTING-ptcp–dport80-jREDIRECT–to-port8080-tnat:指出我要操作什么表.(不写就表示filter.默认是filter)-APREROUTING:A添加的意思.表示我要在PREROUTING中添加一个规则–dport80:如果请求80端…

    2022年9月18日
    1
  • petshop java_petshop.java[通俗易懂]

    petshop java_petshop.java[通俗易懂]importjava.util.Scanner;classPet{privateintnumber;privateStringvariety;privateStringcolor;privateintage;privateintprice;publicPet(intnumber,Stringvariety,Stringcolor,intage,intprice)…

    2022年10月17日
    2
  • idea 2021激活码 3月最新注册码

    idea 2021激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    40
  • window计算机日志分析详解,windows系统日志分析

    window计算机日志分析详解,windows系统日志分析一、Windows日志文件的保护日志文件对我们如此重要,因此不能忽视对它的保护,防止发生某些“不法之徒”将日志文件清洗一空的情况。1.修改日志文件存放目录Windows日志文件默认路径是“%systemroot%system32config”,我们可以通过修改注册表来改变它的存储目录,来增强对日志的保护。点击“开始→运行”,在对话框中输入“Regedit”,回车后弹出注册表编辑器,依次展开“HK…

    2025年10月6日
    2
  • 使用Jar命令压缩War包「建议收藏」

    使用Jar命令压缩War包「建议收藏」偶然看见这么一个介绍详细的说明,呵呵虽然经常用 1.首先是工具比如Eclipse很方便了。 2.用winrar之类的工具,把web-info目录,及跟它同级的所有目录及文件,打包成zip文件就行了,然后把扩展名改成war! 3Jar命令: 假定有一个Web应用:C:\myHome myHome/WEB-INF/…… myHome/files/…… myH

    2022年9月28日
    4
  • Laravel 中 validation 验证 返回中文提示 全局设置

    Laravel 中 validation 验证 返回中文提示 全局设置

    2021年10月23日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号