首页 > 代码库 > 工资系统解决办法
工资系统解决办法
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包下载
工资系统解决办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。