相当于 Java 中的 CryptoStream .NET?

2023-12-13

我有一个 Visual Basic 中的加密字符串。 NET 2008中,加密和解密的函数如下:

Imports System.Security.Cryptography

 Public Shared Function Encriptar(ByVal strValor As String) As String
    Dim strEncrKey As String = "key12345" 
    Dim byKey() As Byte = {}
    Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}
    Try
        byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey)
        Dim des As New DESCryptoServiceProvider
        Dim inputByteArray() As Byte = Encoding.UTF8.GetBytes(strValor)
        Dim ms As New MemoryStream
        Dim cs As New CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write)
        cs.Write(inputByteArray, 0, inputByteArray.Length)
        cs.FlushFinalBlock()
        Return Convert.ToBase64String(ms.ToArray())
    Catch ex As Exception
        Return ""
    End Try
End Function

Public Shared Function Desencriptar(ByVal strValor As String) As String
    Dim sDecrKey As String = "key12345" 
    Dim byKey() As Byte = {}
    Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}
    Dim inputByteArray(strValor.Length) As Byte
    Try
        byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey)
        Dim des As New DESCryptoServiceProvider
        If Trim(strValor).Length = 0 Then
            Throw New Exception("Password No debe estar en Blanco")
        End If
        inputByteArray = Convert.FromBase64String(strValor)
        Dim ms As New MemoryStream
        Dim cs As New CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write)
        cs.Write(inputByteArray, 0, inputByteArray.Length)
        cs.FlushFinalBlock()
        Dim encoding As System.Text.Encoding = System.Text.Encoding.UTF8
        Return encoding.GetString(ms.ToArray(), 0, ms.ToArray.Count)
    Catch ex As Exception
        Return ""
    End Try
End Function

例如,使用此函数加密的单词“android”给出的结果是“B3xogi/Qfsc=”

现在我需要使用相同的密钥(即“key12345”)从java解密字符串“B3xogi/Qfsc=”,结果应该是“android”......有人知道如何做到这一点吗?

提前致谢。


使用Apache Commons Codec进行十六进制和base64编码/解码,可以使用以下代码:

KeySpec ks = new DESKeySpec("key12345".getBytes("UTF-8"));
SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(ks);

IvParameterSpec iv = new IvParameterSpec(
        Hex.decodeHex("1234567890ABCDEF".toCharArray()));

Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, iv);

byte[] decoded = cipher.doFinal(Base64.decodeBase64("B3xogi/Qfsc="));

System.out.println("Decoded: " + new String(decoded, "UTF-8"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相当于 Java 中的 CryptoStream .NET? 的相关文章

随机推荐

  • CLion 未在终端中运行

    在 CLion 的嵌入式终端中放置某些字符 单击 运行 按钮时弹出的 运行 选项卡 时存在此错误 我发现如果我更改 CLion 中的终端 就不会发生这种情况 我将终端更改为 cmder 现在一切正常 除了一件事 我不知道如何让 CLion
  • 使用BeautifulSoup,如何防范元素找不到?

    我正在循环遍历表中的表行 但前 1 或 2 行没有我要查找的元素 它们用于表列标题等 因此 在第三个表格行之后 表格单元格 td 中的元素包含我正在寻找的内容 e g td 0 a img src 但调用此函数会失败 因为前几行没有此函数
  • 通过单击按钮替换滑动删除的操作

    我有一个表格视图 每个单元格上都有一个标签和两个按钮 目前我有这段代码可以通过滑动来删除 void tableView UITableView tableView commitEditingStyle UITableViewCellEdit
  • 使用 Python 中的 SAX 解析器按记录的一定数量解析大型 XML

    我能够解析大型 xml 因为我在使用 SAX 解析器时遇到内存问题 我使用 XMLGenerator 来分割 xml 并再次解析它 我的问题是 有没有办法逐个解析大型 xml 例如 一旦我解析前 10000 条记录 就会加载到 csv 或
  • 在Matlab中获取完整大小的颜色条

    我正在为 Matlab 编写一个绘图自动化例程 但是 我在评估颜色条的 水平 大小时遇到 问题 我可以使用以下方法来获取颜色条的大小 cb findall groot Type colorbar get colorbar xwidth cb
  • 在移动设备上随键盘缩放的全屏 HTML 元素

    我有一个 DIV 元素 我希望它显示为浏览器的完整尺寸 但会有一些填充和圆角 这部分很简单 但我希望当键盘显示为新视口的大小时调整它的大小 我可以使用 window visualViewport height 使用 Javascript 很
  • 错误:具有默认值的输入参数在 Postgres 中也必须具有默认值

    我正在尝试设置default值内的变量function in parameter列出但出现错误 错误 具有默认值的输入参数之后也必须具有默认值 Example Create or replace function test name var
  • php cookie 不更新

    我需要更新一个cookie 我在通过 ajax 调用的 php 文件中执行此操作 这是代码 setcookie items POST id 事实上 如果我写的话 cookie不会更新print r COOKIE items 在 setcoo
  • 从字节数组运行程序而不创建临时文件。 C#

    我在 IIS 服务器 MSSQL 上存储了许多 exe 文件 其中包含报告和对服务器上文件的访问权限 这些文件将在周日更改 连接到 SQL Server 并选择一个 exe 文件后 我正在下载 在 SQL 中选择 现在我有一个分配给变量的字
  • 计算移动平均线 MySQL?

    再会 我使用以下代码来计算 9 天移动平均线 SELECT SUM close FROM tbl WHERE date lt 2002 07 05 AND name id 2 ORDER BY date DESC LIMIT 9 但它不起作
  • 使用带有多选标志的 GetOpenFileName() 时如何获取选定文件的列表?

    我尝试过谷歌搜索 但人们似乎有同样的问题 我们无法获得所选文件的列表 这是一段简单的工作代码 与我使用的类似 OPENFILENAME ofn sizeof ofn wchar t file 1024 file 0 0 ofn lpstrF
  • 访问 Glass 上的后置摄像头

    我查遍了api stackoverflow和google 没有找到任何东西 API中有没有办法访问面向眼睛的相机 我希望能够判断用户的眼睛是睁着还是闭着 这个版本的 GDK 可以实现吗 这就是内置眨眼拍照应用程序正在做的事情吗 AFAIK
  • 数据库事务是否可以防止竞争条件?

    我并不完全清楚数据库系统中的事务是做什么的 我知道它们可以用来完全回滚更新列表 例如 从一个帐户中扣除钱并将其添加到另一个帐户中 但这就是它们所做的一切吗 具体来说 它们可以用来防止竞争条件吗 例如 Java JPA example em
  • 如何知道lambda函数本身的事件源

    我想知道函数中lambda函数的事件源 我想要做的是使用某些 AWS 服务 CloudWatch S3 Step 函数等 中的一个 lambda 函数 并根据服务更改其行为 上下文对象 函数的参数之一 包含有关 lambda 函数的信息 但
  • Java 易失性引用与 AtomicReference

    有什么区别吗volatile对象引用和AtomicReference如果我只想使用get and set 方法来自AtomicReference 简短的回答是 不 来自java util concurrent atomic包文档 去引用 原
  • GDK 图片意图卡在点击接受上

    今天我的 Glass 应用程序上的图片功能停止工作 昨天还好好的 但现在卡在了 点击接受图片 上 我认为这可能与它处理图片和取景器的新方式 至少对我来说 有关 我在玻璃开发者网站上找到的内容已被弃用并且不起作用 我的希望 信念是 新想法是为
  • java中什么时候使用垃圾收集器?

    据我所知 GC仅在JVM需要更多内存时使用 但我不确定 所以 请有人建议这个问题的答案 据我了解 Java 的垃圾收集算法非常复杂 而且并不那么简单 此外 GC 不仅有多种算法可供使用 还可以在 VM 启动时通过传递给 JVM 的参数来选择
  • 您可以将图像“流式传输”到 ffmpeg 来构建视频,而不是将它们保存到磁盘吗?

    我最近的工作涉及以编程方式制作视频 在 python 中 典型的工作流程如下所示 import subprocess Image ImageDraw for i in range frames per second video durati
  • 在php中同时发布和获取

    您对我的问题有什么建议吗 我需要同时使用 get 和 post 获取是因为我需要输出用户输入的内容 并发布 因为我需要访问与该输入相关的 mysql 数据库 它看起来像这样
  • 相当于 Java 中的 CryptoStream .NET?

    我有一个 Visual Basic 中的加密字符串 NET 2008中 加密和解密的函数如下 Imports System Security Cryptography Public Shared Function Encriptar ByV