java对称加密-java 如何实现 以下c# 对称加密可逆算法

问题描述

java 如何实现 以下c# 对称加密可逆算法

using System;
using System.IO;
using System.Security.Cryptography;

using System.Text;

namespace DataCrypto
{
///

/// 对称加密算法类

///

public class SymmetricMethod
{

    private SymmetricAlgorithm mobjCryptoService;
    private string Key;
    /// <summary>
    /// 对称加密类的构造函数
    /// </summary>
    public SymmetricMethod()
    {
        mobjCryptoService = new RijndaelManaged();
        Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
    }
    /// <summary>
    /// 获得密钥
    /// </summary>
    /// <returns>密钥</returns>
    private byte[] GetLegalKey()
    {
        string sTemp = Key;
        mobjCryptoService.GenerateKey();
        byte[] bytTemp = mobjCryptoService.Key;
        int KeyLength = bytTemp.Length;
        if (sTemp.Length > KeyLength)
            sTemp = sTemp.Substring(0, KeyLength);
        else if (sTemp.Length < KeyLength)
            sTemp = sTemp.PadRight(KeyLength, ' ');
        return ASCIIEncoding.ASCII.GetBytes(sTemp);
    }
    /// <summary>
    /// 获得初始向量IV
    /// </summary>
    /// <returns>初试向量IV</returns>
    private byte[] GetLegalIV()
    {
        string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
        mobjCryptoService.GenerateIV();
        byte[] bytTemp = mobjCryptoService.IV;
        int IVLength = bytTemp.Length;
        if (sTemp.Length > IVLength)
            sTemp = sTemp.Substring(0, IVLength);
        else if (sTemp.Length < IVLength)
            sTemp = sTemp.PadRight(IVLength, ' ');
        return ASCIIEncoding.ASCII.GetBytes(sTemp);
    }
    /// <summary>
    /// 加密方法
    /// </summary>
    /// <param name="Source">待加密的串</param>
    /// <returns>经过加密的串</returns>
    public string Encrypto(string Source)
    {
        byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
        MemoryStream ms = new MemoryStream();
        mobjCryptoService.Key = GetLegalKey();
        mobjCryptoService.IV = GetLegalIV();
        ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
        CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
        cs.Write(bytIn, 0, bytIn.Length);
        cs.FlushFinalBlock();
        ms.Close();
        byte[] bytOut = ms.ToArray();
        return Convert.ToBase64String(bytOut);
    }
    /// <summary>
    /// 解密方法
    /// </summary>
    /// <param name="Source">待解密的串</param>
    /// <returns>经过解密的串</returns>
    public string Decrypto(string Source)
    {
        byte[] bytIn = Convert.FromBase64String(Source);
        MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
        mobjCryptoService.Key = GetLegalKey();
        mobjCryptoService.IV = GetLegalIV();
        ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
        CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
        StreamReader sr = new StreamReader(cs);
        return sr.ReadToEnd();
    }
}

}

以上代码 我想改成JAVA 实现 跪求高手

时间: 2025-01-10 03:21:13

java对称加密-java 如何实现 以下c# 对称加密可逆算法的相关文章

解决方案-如何进行Java的混淆与加密?Tomcat如何调用混淆和加密后的JAR和Java类文件?

问题描述 如何进行Java的混淆与加密?Tomcat如何调用混淆和加密后的JAR和Java类文件? 由于公司的Java商用程序需要部署在第三方平台,我们需要对Java商用程序进行混淆 和加密.混淆我们想采用ProGuard的解决方案对JAR和Java类文件进行混淆,加密我们 采用JCE加密方案. 我们的开发环境是: OS: Ubuntu Web APP: Apache Tomcat Java编译: Apache Maven 因我们之前没有做过这方面的研究,所以请教各位提供详细的实施和部署操作!

java-C#加密 Java解密 不成功

问题描述 C#加密 Java解密 不成功 最近遇到一个问题 C#DES加密 A加密一段URL,发给B,B用的是Java解密,而A用的是C#加密 本来也没有多大问题,可是两边没有商榷好 解密:Java利用已有password生成密钥key, KeyGenerator keyGenerator = KeyGenerator.getInstance(DES); keyGenerator.init(new SecureRandom(key)); SecretKey securekey = keyGene

Java安全——理解Java沙箱

Java安全--理解Java沙箱 标签: Java 安全 [toc] 什么是沙箱^1 Java安全模型的核心就是Java沙箱(sandbox),什么是沙箱?沙箱是一个限制程序运行的环境.限制程序运行一方面是为了保护系统资源,同时另一方面也为了保护程序自己.沙箱主要限制系统资源访问,那系统资源包括什么?--CPU.内存.文件系统.网络.不同级别的沙箱对这些资源访问的限制也可以不一样. 所有的Java程序运行都可以指定沙箱,可以定制安全策略.而一个Java程序运行的安全策略,包括了以下几点基础: 字

如何保护Java程序 防止Java反编译

Java是一种跨平台的.解释型语言.Java 源代码编译中间"字节码"存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如变量名.方法名等.因此,Java中间代码的反编译就变得非常容易.目前市场上有许多免费的.商用的反编译软件,都能够生成高质量的反编译后的源代码.所以,对开发人员来说,如何保护Java程序就变成了一个非常重要的挑战.本文首先讨论了保护Java程序的基本方法,然后对代码混淆问题进行深入研究,最后结合一个实际的应用程序,分

Ubuntu下使用Java visualVM对Java程序进行性能分析

使用Java visualVM的原因: 体积小,不耗内存,操作简单,功能全.关于Java visualVM和其他性能测试工具的比较,网上有很多文章,去搜搜看吧. 1. 在服务器上配置jstatd的security policy文件. jstatd是一个监控JVM(Java Virtual Machine,Java虚拟机)从创建到销毁过程中资源占用情况,并提供远程监控接口的RMI(Remote Method Invocation,远程方法调用)服务程序,它是一个Deamon程序,要保证远程监控软件

Java学习之Java的运行环境

Java 时下已经非常流行.全球每天有超过百万的程序员在用Java进行着程序的开发.用Java编写的程序也因为其硬件环境无关性而越来越受到人们的青睐.如果您希望成为Java世界的一员,那就看看这个系列的文章也许对您会有帮助. 无论哪种语言都需要有它特定的运行环境也就是平台,Java 同样不例外.您也许会问,Java程序不是有硬件环境无关性吗?好吧,我希望这篇文章可以回答好这个问题. 几乎所有的语言都是需要通过编译或者解释才可以被您的电脑执行.可是Java有一点不同,它同时需要这两个过程.其实,也

实战php调用java类由java类读数据库完成相关操作(Inber Write)

数据|数据库 1 建立系统ODBC 数据源photo(本次使用的是Oracle 9i,详细配置如有不懂这处再和我联系)2 编译DataBaseConnection.java文件 将其编译文件放入到PHP支持的类文件目录中 package com.inberkong.util;/******************************************************* * Programe File :复件缓冲池DataBaseConnection.java * Creat  

实战 php调用java类由java类读数据库完成相关操作(Inber Write)

1 建立系统ODBC 数据源photo(本次使用的是Oracle 9i,详细配置如有不懂这处再和我联系)2 编译DataBaseConnection.java文件 将其编译文件放入到PHP支持的类文件目录中 package com.inberkong.util;/******************************************************* * Programe File :复件缓冲池DataBaseConnection.java * Creat    Date

革命性的Java 8:Java回来了

JavaOne 2013已于近日在旧金山举行.9月22日,来自Oracle员工Peter Utzschneider.Nandini Ramani和Cameron Purdy的战略主题演讲拉开了此次庆典的序幕,活动持续到9月26日. 这是第十八次JavaOne大会,Java社区并没有显出放缓的迹象.Utzschneider告诉观众,Java仍然是世 界第一的开发平台,并且Java用户组的数量以每年10%的速度增长. Java的未来 Ramani探讨了Java的现状以及Java如何有若干不同的SDK