首页 > 编程语言 >对接Java所谓的DES加解密

对接Java所谓的DES加解密

时间:2024-10-23 15:35:24浏览次数:1  
标签:Java string DES 加解密 默认 new memStream byte ECB

     众所周知,Java的一些封装方法中默认编码方式和实现略有不同与c#,  以及基础类型整型默认范围是有符号的,可以是负数,但是c#中默认是有符号的,不能为负数. 

     两者在对接的时候,涉及到一些编码方式,以及加解密时问题就来了,网上铺天盖地的各种兼容写法实际上手之后很难凑效,下面针对DES加解密默认方式来处理

     C# 代码如下,针对 java 默认的是ECB模式,PKCS5padding;

        public static string EncryptKiaser(string destring, string secretKey, bool bolCode = false)
        {
            // 示例数据和密钥
            byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey);
            byte[] keyIV = keyBytes;
            byte[] inputByteArray = Encoding.UTF8.GetBytes(destring);

            DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();

            // java 默认的是ECB模式,PKCS5padding;c#默认的CBC模式,PKCS7padding 所以这里我们默认使用ECB方式
            desProvider.Mode = CipherMode.ECB;
            MemoryStream memStream = new MemoryStream();
            CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);

            crypStream.Write(inputByteArray, 0, inputByteArray.Length);
            crypStream.FlushFinalBlock();
            string base64Str = Convert.ToBase64String(memStream.ToArray());
            return base64Str;
        }


        public static string DEScryptKiaser(string decryptString, string sKey)
        {
            byte[] keyBytes = Encoding.UTF8.GetBytes(sKey);
            byte[] keyIV = keyBytes;
            byte[] inputByteArray = Convert.FromBase64String(decryptString);
            DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();

            // java 默认的是ECB模式,PKCS5padding;c#默认的CBC模式,PKCS7padding 所以这里我们默认使用ECB方式
            desProvider.Mode = CipherMode.ECB;
            MemoryStream memStream = new MemoryStream();
            CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);

            crypStream.Write(inputByteArray, 0, inputByteArray.Length);
            crypStream.FlushFinalBlock();
            string result = Encoding.UTF8.GetString(memStream.ToArray());
            return result;
        }

 

标签:Java,string,DES,加解密,默认,new,memStream,byte,ECB
From: https://www.cnblogs.com/Sientuo/p/18496506

相关文章

  • Java综合测试题精选
    一,填空题Javaapplication中的主类需要包含main方法,main方法的返回类型是void。Java正则表达式中,通配符\w等同于大小写字母,数字和下划线。System.out.println(true?false:true==true?false:true);输出结果为false。在Java中对于基本类型变量,Java是传值的副本;对于......
  • java8 stream详细理解
    stream简介Java8中的Stream是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregateoperation),或者大批量数据操作(bulkdataoperation)。StreamAPI借助于Lambda表达式,极大的提高编程效率和程序可读性。stream接口方法......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在网络小说的要求下,开发一款整体式结构的小说网站,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳定性的保......
  • Java 泛型 Lambda 表达式
    介绍泛型是程序设计的一种特性,它允许强类型程序语言设计代码定义一些可以变的部分,编程中用泛型来代替某个实际的类型,而后通过实际调用传入的类型对泛型进行替换,达到代码复用的目的,有些像函数传参**使用泛型,操作的数据类型被指定为一个参数,这种参数在类接口和......
  • 计算机毕业设计项目推荐,基于协同过滤算法的短视频推荐系统设计与实现30213(开题答辩+程
    摘 要现阶段,社会的发展和科技的进步,以及大数据时代下纷繁数据信息的融合,使得人们在生产及生活过程中,都将会接收到各种类型的数据信息,而通过计算机技术与网络技术,则能够将众多人们所不了解或不常用的信息,以简单的模式转化并传递给人们,使得人们的生产及生活质量得以显著提升......
  • 计算机毕业设计项目推荐:基于Web的社区人员管理系统的设计36303(开题答辩+程序定制+全套
    摘要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用ASP.NET技术建设社......
  • Java中super和this的用法和区别
    一、this是自身的一个对象,代表对象本身,可以理解为指向对象本身的一个指针this是用来访问本类实例属性和方法的,它会先从本类中找,如果本类中找不到则在父类中找this属性使用:用来赋值本类属性(最常见的用法),写类时的setter方法eg:publicvoidsetId(intid){this.id=i......
  • 2024java面试常见八股文整理
    Java基础1.常用的Java集合有哪些,有什么应用场景Java集合可以分为Collection和Map两种体系Collection接口:单列数据,定义存取一组对象的方法的集合LIst:元素有序、可重复的集合Set:元素无序、不可重复的集合Map接口:双列数据,保存具有映射关系“Key-value对”的集合2.Java线......
  • 最新Java面试题合集,将持续更新!
    1.7.重载和重写的区别重写(Override)从字面上看,重写就是重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回......
  • Java程序员最好的AI框架,伴随着Spring到来了
    SpringAI:简化AI集成的Java框架在过去,Java缺乏一个优秀的AI应用框架,这使得开发者在整合不同AI提供商的服务时面临诸多不便。SpringAI的出现填补了这一空白。它是一个专为AI工程设计的应用框架,旨在将Spring生态系统的设计原则(如可移植性和模块化)引入到AI领域,并提......