当前位置: 首页 > 面试题库 >

相当于Java中的CryptoStream .NET?

宦飞
2023-03-14
问题内容

我在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"));


 类似资料:
  • 问题内容: 我的任务是为开源应用程序编写身份验证组件。我们有一个使用的内部身份验证小部件。我有一些例子访问的代码,它使用来办理过户。 我的问题是,是否有to 的端口,或者更好的是,什么基本软件包将使我足够接近以处理任务? 更新 : 简而言之,我想在JAVA中复制的代码: 我认为您的目标是正确的,我认为我最终将使用HttpsURLConnection,然后从响应中选择所需的内容。 问题答案: 省略异

  • 问题内容: 我正在使用Java进行编译器设计项目。进行了词法分析(使用jflex),我想知道哪种yacc类工具最适合(最有效,最易用等)进行语法分析,为什么这样做。 问题答案: 如果您特别想要类似YACC的行为(表驱动),那么我所知道的唯一一个就是CUP。 在Java世界中,似乎有更多的人倾向于ANTLR或JavaCC之类的递归下降解析器。 而且效率很少是选择解析器生成器的原因。

  • 问题内容: 我的任务是为开源JAVA应用程序编写身份验证组件。我们有一个使用的内部身份验证窗口小部件。我有一些例子访问的代码,它使用来办理过户。 我的问题是,是否有 的端口,或者更好的是,什么基本软件包将使我足够接近以处理任务? 更新: 简而言之,我想在JAVA中复制的代码: 希思,我认为你的目标是正确的,我认为我最终将使用HttpsURLConnection,然后从响应中选择所需的内容。 问题答

  • 问题内容: 我正在寻找Java ByteBuffer的“ C ++”。 我可能会丢失明显的内容,或者仅需要一个孤立的用法示例进行澄清。我浏览了iostream家族,它似乎可以提供基础。具体来说,我希望能够: 从字节数组/点构建缓冲区,并从缓冲区获取原语,例如getByte,getInt 使用原语(例如putByte,putInt)构建缓冲区,然后获取字节数组/指针。 问题答案: 您已经拥有,或者可

  • 问题内容: Java是否具有表示一段时间的数据类型,例如34秒,5分钟等。 我已经看到了一些TimeSpan的实现,这些实现涵盖了从12月10日到12月11日这样的时间段。 我需要的是类似C#中的TimeSpan。 问题答案: 目前还不是JDK的一部分,但是将被合并到JDK 7中-尝试Joda Time

  • 问题内容: 在这里遇到一些建筑上的麻烦。 在C ++中,我们有“朋友”的概念,这种朋友类可以访问私有成员。 因此,我正在设计一个Java应用程序并尝试遵守MVC架构。我有一个控制器类来管理“ map_objects”之间的图形连接。我想通过使用此控制器类在DTO’map_objects’中隐藏实际设置这些连通性的函数。 (即,即使控制器类实现了设置连接性所需的功能,“用户”仍然可以直接在DTO中访