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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 彻底搞懂0-1背包问题(动态规划)

    彻底搞懂0-1背包问题(动态规划)看了很多网上的博客,发现对于0-1背包问题很多讲的都很专业,初学者学起来还是比较吃力,今天我就用最简单最形象的语言来描述一下0-1背包问题,为什么不能用贪婪算法,而要选择使用动态规划。首先对于0-1背包问题,我们需要知道的是:每一个物品只有1个,要么全拿,要么不拿,最后使得拿到的物品的总价值最大。假如一个小偷有一个可以容纳4千克的背包,但是发现面前只有有3样物品可以偷:台灯(30元,4千克)、音响(20元,3千克)、充电宝(15元,1千克)(价格和重量可能有点奇怪????)。问,小偷能够偷到的物品的

    2022年7月26日
    8
  • ajax基础

    ajax基础

    2022年1月27日
    37
  • 晴天的魔法乐园——谢尔宾斯基地毯(递归打印图形)「建议收藏」

    晴天的魔法乐园——谢尔宾斯基地毯(递归打印图形)「建议收藏」题目链接:https://judger.net/problem/1061ProblemDescription谢尔宾斯基地毯是一种分形图案,它的定义如下:令F(n)表示嵌套n层的谢尔宾斯基地毯,那么(下面的“空”均表示空格,仅为示意,实际输出时应仍为空格)当n=1时,F(1)为:空当n=2时,F(2)为:空空空空X空空空空一般地,如果F(n-1)表示嵌…

    2022年7月13日
    13
  • dos清除windows密码命令_哪些文件会被dos病毒感染

    dos清除windows密码命令_哪些文件会被dos病毒感染 今天,朋友叫我帮看看他的电脑,说是中了个比较NB的病毒,我颇感兴趣!因为好久没有遇到有挑战性的病毒了!今天又可以练练手了^_^打开他的电脑,并没有发现什么特别具有破坏力的现象。exe、com、src等等文件都没有被感染,GHOST备份文件也还在。仔细查看系统,归纳起来,中毒后主要呈现如下症状:1.杀毒软件被中止和禁止重新启用,系统垃圾清除类软件被禁止启用。中毒后注销重新进入系

    2022年10月3日
    0
  • 与阿根廷一起学习Java Web四个发展:对于信息传输和信息传输

    与阿根廷一起学习Java Web四个发展:对于信息传输和信息传输

    2022年1月5日
    44
  • PHP入门:在Windows中安装PHP工作环境

    PHP入门:在Windows系统中分别安装PHP工作环境一、什么是LAMP?Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各

    2021年12月20日
    43

发表回复

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

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