java 简单加密

* 所有的加密技术的基本操作都是用encrypt()和decrypt()方法对消息
* 进行分解和组合,其中消息是用空格分隔的字符串,除了encrypt()和decrypt()
* 外每个加密类还需要encode()和decode()方法对每一个单词按照特定的算法
* 规则进行编码,。例如Caesar Cipher 和 Transpose Clipher
* 按照设想由于加密都有相同的方法,因此首先定义一个通用的类Cipher类
* 封装公用的方法。

package Case.Encryption;
import java.util.*;

public abstract class Cipher {
/**
 * 所有的加密技术的基本操作都是用encrypt()和decrypt()方法对消息
 * 进行分解和组合,其中消息是用空格分隔的字符串,除了encrypt()和decrypt()
 * 外每个加密类还需要encode()和decode()方法对每一个单词按照特定的算法
 * 规则进行编码,。例如Caesar Cipher 和 Transpose Clipher
 *   按照设想由于加密都有相同的方法,因此首先定义一个通用的类Cipher类
 *   封装公用的方法。
 *
 * */
  public String encrypt(String s){

      StringBuffer result=new StringBuffer();
      StringTokenizer words=new StringTokenizer(s);
      while(words.hasMoreTokens()){
          result.append(encode(words.nextToken())+"");
      }
      return result.toString();
  }

  public String decrypt(String s)
  {
      StringBuffer result=new StringBuffer();
      StringTokenizer words=new StringTokenizer(s);
      while(words.hasMoreTokens())
      {
          result.append(decode(words.nextToken())+"");

      }
      return result.toString();

  }
  public abstract String encode(String word);
  public abstract String decode(String woid);

}
package Case.Encryption;

public class Caesar extends Cipher{

    @Override
    public String encode(String word) {
        // TODO Auto-generated method stub
        StringBuffer result =new StringBuffer();
        for(int k=0;k<word.length();k++)
        {
            char ch=word.charAt(k);
            ch=(char)(‘a‘+(ch-‘a‘+3)%26);//?正则表达式
            result.append(ch);
        }
        return result.toString();
    }

    @Override
    public String decode(String word) {
        // TODO Auto-generated method stub
        StringBuffer result =new StringBuffer();
        for(int k=0;k<word.length();k++)
        {
            char ch=word.charAt(k);
            ch=(char)(‘a‘+(ch-‘a‘+23)%26);//?正则表达式
            result.append(ch);
        }
        return result.toString();
    }

}
package Case.Encryption;
/**本例采用的是最简单的翻转易位方法,也可以采用其他的易位方法*/
public class Transpose extends Cipher{

    @Override
    public String encode(String word) {
        // TODO Auto-generated method stub
        StringBuffer result =new StringBuffer();

        return result.reverse().toString();
    }

    @Override
    public String decode(String word) {
        // TODO Auto-generated method stub
        return encode(word);
    }

}
 1 package Case.Encryption;
 2
 3 public class TestEncrypt {
 4     public static void main(String[] args) {
 5         Caesar caesar =new Caesar();
 6         String plain ="this is the secret message.";
 7         String secret=caesar.encrypt(plain);
 8         String decrypt=caesar.decrypt(secret);
 9         System.out.println("*********Caesar Cipher Encryption**********");
10         System.out.println("PlainText: "+plain);
11         System.out.println("Encrypted: "+secret);
12         System.out.println("Decrypted: "+decrypt);
13
14         Transpose ts=new Transpose();
15         String tsecret=ts.encrypt(plain);
16         String tdecrypt=ts.decrypt(secret);
17         System.out.println("**********Transpose Cipher Encryption**********");
18         System.out.println("PlainText: "+plain);
19         System.out.println("Encrypted: "+tsecret);
20         System.out.println("Decrypted: "+tdecrypt);
21     }
22
23 }

java 简单加密

时间: 2024-08-04 22:58:05

java 简单加密的相关文章

Java开发经验分享之JAVA简单实现DES加密与实现DES解密

前言:相信很多小伙伴在开发过程中都会加密问题.当然,小菜在开发中也遇到了,这里呢,小菜想说的是JAVA简单实现DES加密. 今天就简单实现一下如何DES加密解密.话不多说,代码如下.直接可用.希望能成为你项目中的一个很好的工具类. public class DesEncrypt { // DES加密密钥key public static String key = "sdfDA12r3JHV214IJrwerDSO892BK2345nrekk35oewr4wrwrenlklknsdlemifzkw

Android简单加密保护自有图片资源

现在大部分android应用的图片资源,被反编译后就可以直接拿来用,如果不想让自己的图片资源直接被反编译后使用,首先想到的应该是把图片加密.这里笔者抛砖引玉,草草写了一个对图片进行简单加密的方法,希望对各位看官有用. 首先是加密部分,这里使用的是简单的异或来将图片进行加密.新建一个java project或者干脆直接用文本文件写下下面的代码,然后在命令行执行,代码如下: 1 import java.io.File; 2 3 import javax.imageio.stream.FileImag

(转)java源程序加密解决方案(基于Classloader解密)

转:http://cjnetwork.iteye.com/blog/851544 源程序加密解决方案 1. 概述: Java源程序的加密,有如下两种: 1使用混淆器对源码进行混淆,降低反编译工具的作用 2基于classloader的自定义加密.解密运行 1.1. 混淆器加密 1.2. 自定义classloader加密 1.2.1. 原理 原理:java虚拟机的动态加载机制,为classloader加密方案提供了理论基础.在jvm装载运行程序,初始的时候,只装在了必要的类,如java.lang.S

Java md5加密 控制台传入与web传入参数 结果不匹配 || 相同字符串加密结果不同

开发中遇到md5加密不一致问题,排除了上下文编码,加密内容问题. 爬了各类资料,最终找到了原因. /** 对字符串进行MD5加密 */ private static String encodeByMD5(String originString) { if (originString != null) { try { // 创建具有指定算法名称的信息摘要 MessageDigest md = MessageDigest.getInstance("MD5"); // 使用指定的字节数组对摘

对Java代码加密的两种方式,防止反编译

使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的java.exe,并且可以实现项目源码绑定制定设备,防止部署到客户服务器的项目被整体拷贝. 两种加密方式 War 包加密 当你的项目在没有完成竣工的时候,不适合使用 war 文件,因为你的类会由于调试之类的经常改,这样来回删除.创建 war 文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 w

Java源代码加密,防止反编译

使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的java.exe,并且可以实现项目源码绑定制定设备,防止部署到客户服务器的项目被整体拷贝. 两种加密方式 War 包加密 当你的项目在没有完成竣工的时候,不适合使用 war 文件,因为你的类会由于调试之类的经常改,这样来回删除.创建 war 文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 w

zoj Fibonacci Numbers ( java , 简单 ,大数)

题目 //f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2) import java.io.*; import java.util.*; import java.math.*; public class Main { /** * @xqq */ public BigInteger an(int n) { BigInteger c; BigInteger a = BigInteger.valueOf(1); BigInteger b = BigIn

RSA,JAVA私钥加密,C#公钥解密

做这个东西在坑里爬了3天才爬出来,记录下供园友参考.C#程序员一枚,项目需要和Java做数据交互,对方甩了段密文和一个CER证书给我,然后我要对其密文进行解密. RSA 非对称加密,对方用私钥加密,我用公钥解密.关于证书的一点说明:证书类型有两种 .pfx 和 .cer ,其中 .pfx 证书既包含公钥也包含私钥, 而 .cer 证书只包含公钥. C#默认RSA只支持公钥加密,私钥解密.而现在的需求正好相反,因此想要直接用C#内置加密类肯定是行不通的.而且C#和Java的RSA加密并不互通.经过

Java密码加密与解密

Java密码加密与解密 Java中对代码进行加密与解密,其中用MD5方式的是不可逆的.   import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import