工资系统解决办法

import java.security.InvalidKeyException;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;

import org.apache.commons.codec.binary.Base64;

public class test {
     public static final String CIPHER_ALGORITHM = "RSA/ECB/PKCS1Padding";
     public static final String PLAIN_TEXT = "张三丰,您的2016年10月份工资金额为:8000元。";
     public static final String KEY_ALGORITHM = "RSA";
     /** RSA密钥长度必须是64的倍数,在512~65536之间。默认是1024 */
     public static final int KEY_SIZE = 2048;
     public static final String PUBLIC_KEY = "publicKey";
     public static final String PRIVATE_KEY = "privateKey";

    public static void main(String[] args) throws Exception
    {
        createKeyPairs();
    }
    public static void createKeyPairs() throws Exception
    {
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
        keyPairGenerator.initialize(KEY_SIZE);
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
        //字符串化
        byte[] pk = publicKey.getEncoded();
        byte[] privk = privateKey.getEncoded();
        String strpk = new String(Base64.encodeBase64(pk));
        String strprivk = new String(Base64.encodeBase64(privk));  

        System.out.println("公钥:" + strpk);
        System.out.println("私钥:" + strprivk);  

        //从字符串还原到对象
        X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(Base64.decodeBase64(strpk.getBytes()));
        PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decodeBase64(strprivk.getBytes()));
        KeyFactory keyf =  KeyFactory.getInstance(KEY_ALGORITHM);
        PublicKey pubkey2 = keyf.generatePublic(pubX509);
        PrivateKey privkey2 = keyf.generatePrivate(priPKCS8);  

        //公钥加密
        byte[] encodedText = RSAEncode(pubkey2, PLAIN_TEXT.getBytes());
        System.out.println("加密后的密文: " + Base64.encodeBase64String(encodedText));

        //私钥解密
        System.out.println("解密后的明文: " + RSADecode(privkey2, encodedText));
    }  

    public static byte[] RSAEncode(PublicKey key, byte[] plainText) {

        try {
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE, key);
            return cipher.doFinal(plainText);
        } catch (NoSuchAlgorithmException | NoSuchPaddingException
                | InvalidKeyException | IllegalBlockSizeException
                | BadPaddingException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String RSADecode(PrivateKey key, byte[] encodedText) {

        try {
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.DECRYPT_MODE, key);
            return new String(cipher.doFinal(encodedText));
        } catch (NoSuchAlgorithmException | NoSuchPaddingException
                | InvalidKeyException | IllegalBlockSizeException
                | BadPaddingException e) {
            e.printStackTrace();
        }
        return null;

    }
}

jar包下载

时间: 2024-10-28 21:35:45

工资系统解决办法的相关文章

CentOS GRUB引导错误无法进入系统解决办法

本来想整个LFS试试,结果在最后关头设置LFS系统启动的时候挂了.其余的安装笔记没写多少,先来写写系统怎么挂的. 在LFS之前就在想,万一把我宿主机挂了咋办,没想到真挂了. 但我进行到LFS系统grub安装时,那LFS说明上说的也不明白,我做的也稀里糊涂.似乎把宿主机系统GRUB损坏了,重写了.结果LFS系统也没装好,重启后LFS进不去,宿主机系统就更别说了,根本没有宿主机进系统的选项.... 于是开始找办法,我想即便是LFS挂了,恢复出宿主机也好啊,结果手贱点错了,直接双击了.vmdk文件,立

三星笔记本R428安装xp win7双系统,切换系统重启才能进入系统解决办法。

三星笔记本 XP win7 双系统切换重启解决方法 三星笔记本有个奇怪的现象,就是装有XP和win7双系统    xp切换到win7.进系统是会重启一次,并且bios回复光驱为第一启动项,win7切换到XP也是一样.但是如果一直只用其中的一个系统时则没有重启的现象. 经过两天的实践我的三星R428本本终于可以一次就切换成功.现将我的经验与大家分享,希望能帮到有需要的童鞋 重启的原因如下: Bios中 advance下的AHCI Mode Control(仅供参考,不同品牌会不一样) 设置为AUT

java 不允许同一账户不同IP 同时登录系统解决办法 兼容IE Firefox

需求就是 不允许同一个账户同一时间登录系统.只要有一个账户在线其他人就是不能用这个账户. 功能很简单,过程很纠结 . 这篇文章解决了兼容IE.Firefox 浏览器下,不同IP 地址 同一用户同时登陆的解决办法,包括应对浏览器没有正常关闭的情况. 说下解决过程,本来以为用session存取就好了,后来只能在同一个浏览器内标签窗口好用.跨浏览器就不行.因为sessionId不一样.(经测试 跟sessionID 没关系 ) 网上找了一些解决办法.又是些监听器 又是写 方法的: 又是数据库加字段判断

putty 无法登陆Ubuntu系统解决办法

问题:今天想用putty登录Ubuntu,但是输入ip地址端口号后始终无法登录 原因:希望远程登陆的Ubuntu没有安装openssh-service 解决办法:安装openssh-service 具体命令: 1.安装Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可.安装ssh-serversudo apt-get install openssh-server安装ssh-clientsudo apt-get inst

centos 6.5 启动时卡在进度条位置无法进入系统解决办法。

今天公司服务器因突然断电导致phddns 花生壳 启动失败,一直卡在启动进度条页面. 解决办法 1.按F5查看卡在什么位置, 2.查看解决方法:程序卡住的情况下,直接备份资料后,卸载程序重启就可以了. 3.进入到single单用户模式下,将程序删除就可以了. 进入single: 1.开机时按 'e' 键, 然后进入grub菜单. 2.选择要启动的版本,然后按 'e' 键 3.选择 带kernel的项,然后按 'e' 键,在后面添加 single,按回车 4.按 'b' 键.接下来系统就会进入一个

U盘安装CentOS无法进入Centos系统解决办法

转自:http://blog.sina.com.cn/s/blog_3feedf320101idlu.html 目前使用U盘安装系统逐渐因为它的便捷而受到人们的欢迎,但是使用U盘来安装CentOS系统却很容易出现一个问题,就是在完成安装拔出U盘之后,进不了系统,而当启动的时候插上U盘就可以正常进入系统.出现这样的问题,应该来讲是安装系统的时候默认把grub安装到了你的U盘上,因此当你开机而不插入U盘的时候,系统是无法通过grub引导进入系统的. 修正的方法其实也很简单,请看下面: 1.通过U盘先

神州精盾笔记本开机自动进入BIOS不进系统解决办法

本人用神州笔记本,曾因BIOS设置问题使得笔记本电脑开机自动进入BIOS不进系统,经过多番查找资料以及个人因机制宜,终于顺利进入系统,特做记录. 方法/步骤 1. 开机按F2,进入Bios设置. 2. 按F9恢复默认设置: 3. 选择Security-->Secure Boot Management按回车进入设置菜单: 4. 将Secure Boot 改为Disabled,按ECS退出:(这步是为了将boot安全保护给关闭,才能允许调整第一启动项) 5. 选择Boot进入启动设置(由于图不好拍照

Mac系统登录不进系统解决办法

1.找到买苹果电脑时附带的 Mac OS X 系统光盘,或者有苹果 Mac OS X 系统镜像的 U 盘/移动硬盘,塞入光驱(或插在 USB /火线接口上).重启苹果电脑,开机时按住“option”键(windows下为alt键) 出现这个启动盘选择界面时,选择系统安装盘 菜单栏出现上图所示的东西时,就不要“下一步”了.选择“实用工具”……“重设密码” 看不到“重设密码”这一选项.可点击“终端”,输入resetpassword,回车.就会出现后面的密码重置界面了. 2.重新启动苹果电脑,开机时时

CentOS 6忘记密码解决办法,root和普通用户均可

转自nui111的文章:http://blog.csdn.net/nui111/article/details/28007357 说明 操作系统:CentOS 6.0 遇到问题:忘记管理员账号root的密码,进不了系统 解决办法:重置root密码为123456 操作: 开机启动系统,在进入系统之前按键盘上面的Esc键,会进入下面的界面 按键盘上的e键,出现下面界面 用键盘上的方向键移动光标到第二项,然后再按键盘上面的e,会出现下面的界面 输入一个空格键,然后在输入数字1,回车之后,会出现下面的界