java密码加密与解密

     2022-05-22     692

关键词:

Java密码加密与解密

Java中对代码进行加密与解密,其中用MD5方式的是不可逆的。

 
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

@SuppressWarnings("unused")
public class PasswordUtils {
    //加密
    @SuppressWarnings({})
    public static String encrypt(String plainText) {
        String result = "";
        try {
            DESKeySpec keySpec = new DESKeySpec("CampusHelper".getBytes("UTF8"));
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey key = keyFactory.generateSecret(keySpec);
            sun.misc.BASE64Encoder base64encoder = new sun.misc.BASE64Encoder();
            sun.misc.BASE64Decoder base64decoder = new sun.misc.BASE64Decoder();

            // ENCODE plainTextPassword String
            byte[] cleartext = plainText.getBytes("UTF8");

            Cipher cipher = Cipher.getInstance("DES"); // cipher is not thread
                                                        // safe
            cipher.init(Cipher.ENCRYPT_MODE, key);
            result = base64encoder.encode(cipher.doFinal(cleartext));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
      //解密
    @SuppressWarnings({})
    public static String decrypt(String encryptedPwd)
            throws InvalidKeyException, UnsupportedEncodingException {
        String result = "";
        try {
            DESKeySpec keySpec = new DESKeySpec("CampusHelper".getBytes("UTF8"));
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey key = keyFactory.generateSecret(keySpec);
            sun.misc.BASE64Encoder base64encoder = new sun.misc.BASE64Encoder();
            sun.misc.BASE64Decoder base64decoder = new sun.misc.BASE64Decoder();

            // DECODE encryptedPwd String
            byte[] encrypedPwdBytes = base64decoder.decodeBuffer(encryptedPwd);

            Cipher cipher = Cipher.getInstance("DES");// cipher is not thread
                                                        // safe
            cipher.init(Cipher.DECRYPT_MODE, key);
            byte[] plainTextPwdBytes = (cipher.doFinal(encrypedPwdBytes));
            result = new String(plainTextPwdBytes);
        } catch (Exception e) {

            System.out.println("解密失败:"+encryptedPwd);
            result=againDecrypt(encryptedPwd);
        }
        return result;
    }

    public static String againDecrypt(String encryptedPwd)
            throws InvalidKeyException, UnsupportedEncodingException {
        String result = "";
        try {
            encryptedPwd=URLDecoder.decode(encryptedPwd,"utf-8");
            DESKeySpec keySpec = new DESKeySpec("CampusHelper".getBytes("UTF8"));
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey key = keyFactory.generateSecret(keySpec);
            sun.misc.BASE64Encoder base64encoder = new sun.misc.BASE64Encoder();
            sun.misc.BASE64Decoder base64decoder = new sun.misc.BASE64Decoder();

            // DECODE encryptedPwd String
            byte[] encrypedPwdBytes = base64decoder.decodeBuffer(encryptedPwd);

            Cipher cipher = Cipher.getInstance("DES");// cipher is not thread
                                                        // safe
            cipher.init(Cipher.DECRYPT_MODE, key);
            byte[] file=cipher.doFinal(encrypedPwdBytes);
            byte[] plainTextPwdBytes = (file);
            result = new String(plainTextPwdBytes);
        } catch (Exception e) {
            //e.printStackTrace();
            System.out.println("重新解密失败:"+encryptedPwd);

        }
        return result;
    }


    public static String generateMD5(String plainText) {
        String result = "";
        try {

            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(plainText.getBytes());
            byte[] digest = md.digest();
            StringBuffer sb = new StringBuffer();
            for (byte b : digest) {
                sb.append(Integer.toHexString(b & 0xff));
            }

            result = sb.toString();

        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }

    public static void main(String[] args) {
        try {
            //System.out.println(decrypt(URLDecoder.decode("BrhT6ggt4%252BI%253D","utf-8")));
            //System.out.println(decrypt(URLDecoder.decode(URLDecoder.decode("BrhT6ggt4%252BI%253D","utf-8"))));
        //System.out.println(URLEncoder.encode(encrypt("41"), "utf-8"));
        //System.out.println(encrypt("41"));
//          long now = System.currentTimeMillis();
//          System.out.println(now);
//          now = now - now / 10000000000L * 10000000000L;
//          System.out.println(now);
                    System.out.println(decrypt("DAD0dZU0S/w/pJcrfPW4Fw=="));
            //System.out.println(encrypt("321088199511214887"));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

AES加密和解密Java

...是对于其他电脑上的解密,我的加密算法正在生成一个“密码密码”,这是在另一侧与密钥一起解密所需要的。我不确定如何将密码传输到另一端。这是我的代码publicclassAESCryp 查看详情

AES加密与openssl解密使用java

...程序)。正如您在下面的代码中看到的,客户提供了一个密码,因此将使用SecretKeyS 查看详情

php与java通用aes加密解密算法

...级加密标准(AdvancedEncryptionStandard),是当前最流行的一种密码算法,在web应用开发,特别是对外提供接口时经常会用到,下面是我整理的一套php与java通用的AES加密解密算法。php版代码如下:<?phpclassCryptAES{protected$cipher=MCRYPT_RIJN... 查看详情

转:加密与解密

...应用场景:传递不适合明文传输的报文方案:如果用一个密码把消息加密,解密的时候还用这个密码,这种加密算法就是对称加密算法常用AES加密算法缺点:密码需要定期更新,带来密码安全传递问题DH密钥交换算法应用场景:... 查看详情

loadrunner脚本优化-加密与解密

密码加密  可以给密码加密,意在把结果字符串作为脚本的参数或者参数值。例如,完整可能有一个用户密码填写的表单,你想测试网站针对不同密码的反应,但是你又想保护密码的安全。PasswordEncoder允许你加密你的密码。 ... 查看详情

使用java加密和解密密码使用啥API和算法

】使用java加密和解密密码使用啥API和算法【英文标题】:WhatAPIandalgorithmtobeusedtoencryptanddecryptapasswordusingjava使用java加密和解密密码使用什么API和算法【发布时间】:2012-12-1202:16:33【问题描述】:我目前正在使用Java创建应用程序... 查看详情

使用bcrypt对密码进行加密与解密验证(代码片段)

Bcrypt是一个跨平台的文件加密工具。为了保护用户的明文密码不被泄露,一般会对密码进行单向不可逆加密——哈希。而Bcrypt恰恰就做到这一点,通过Bcrypt加密的明文密码即使解密也不是真的“解密”,哪怕是内部人员,也不会... 查看详情

财务软件加密与解密设计思路

...密字符串,但不能直接加密解密文件。(2)DES可以通过密码进行加密解密文件。(3)DES用的密码,可以使用RSA的公钥和私钥进行一下二次加密,以保护。(4)DES的密码是读取的计算机MAC地址,并且加了一个强度高的密码进行综... 查看详情

与 PHP 一起使用的最佳密码加密和解密技术 [重复]

】与PHP一起使用的最佳密码加密和解密技术[重复]【英文标题】:bestpasswordencryptionanddecryptiontechniquetobeusedwithPHP[duplicate]【发布时间】:2012-02-2616:18:24【问题描述】:可能重复:BestwaytousePHPtoencryptanddecrypt?对于我的项目,我想以加... 查看详情

cipher加密解密

Cipher类为加密和解密提供密码功能。它构成了Java CryptographicExtension(JCE)框架的核心。在本章的上述内容中,只完成了密钥的处理,并未完成加密与解密的操作。这些核心操作需要通过Cipher类来实现。//此类为加密和解密提... 查看详情

Java中基于AES-256密码的加密/解密

】Java中基于AES-256密码的加密/解密【英文标题】:AES-256PasswordBasedEncryption/DecryptioninJava【发布时间】:2015-04-2117:54:02【问题描述】:我找到了在Java中实现AES加密/解密的指南,并在我将其放入自己的解决方案时尝试理解每一行。... 查看详情

python-密码加密与解密(代码片段)

Python之密码加密与解密-对称算法一、对称加密1.1安装第三方库-PyCrypto1.2加密实现二、非对称加密三、摘要算法3.1md5加密3.2sha1加密3.3sha256加密3.4sha384加密3.5sha512加密3.6“加盐”加密  由于计算机软件的非法复制,通信的泄... 查看详情

加解密 Java 凯撒密码

】加解密Java凯撒密码【英文标题】:EncryptionandDecryptionJavaCaesarCipher【发布时间】:2016-08-3005:29:37【问题描述】:我创建了简单的加密程序来加密任何输入文件并将其保存在新的输出文件中。此时我得到简单的加密结果,但是我... 查看详情

在java中加密和解密属性文件值

...517:44:40【问题描述】:我正在寻找一种在配置文件中加密密码的方法正在由Java程序读取。目前,我阅读了来自文本文件的密码,但这会使密码保持正确如果有人要查看配置文件,请公开。我正在考虑构建一个用户可以输入的简... 查看详情

三星手机怎么取消加密设备

...我因为闲着没事干用了加密设备,现在每次开机都要输入密码,我按网上的方式解密设备,可是解密完后开机还要输入密码,怎么办啊!三星手机取消加密设备方法:设定-锁定屏幕与安全(安全)-加密设备(或其他安全设置)-... 查看详情

如何加密/解密来自 JPasswordField Java 的密码

】如何加密/解密来自JPasswordFieldJava的密码【英文标题】:Howtoencrypt/decryptapasswordfromaJPasswordFieldJava【发布时间】:2019-05-2521:15:24【问题描述】:这是我的问题,我正在开发一个用户可以创建帐户的系统,用户启动一个程序,然后... 查看详情

rsa算法js加密java解密

有这样一个需求,前端登录的用户名密码,密码必需加密,但不可使用MD5,因为后台要检测密码的复杂度,那么在保证安全的前提下将密码传到后台呢,答案就是使用RSA非对称加密算法解决。java代码需要依赖commons-codec包RSACoder.j... 查看详情

shiro学习——密码的加密解密(代码片段)

前言前面几篇文章的密码都是以明文形式存储。在真实项目中当然不可能明文存储密码,密码一定是以加密的形式存储的。前面我们可以看到当我们给出帐号和密码后,shiro就会去查找ini配置文件或者数据库对应字段来匹... 查看详情