java建立ssh连接?Java的ssh框架 Java ssh连接
前言:前段时间,我收到一个请求。我需要在项目中ssh一个远程服务器并执行一个脚本。最重要的是找到一个可以在Java程序中支持SSH的工具,然后找到JSch。另一个是SSH2,但是我的连接失败了。JS
顺晟科技
2022-09-15 12:38:49
295
java aes 加密的数据使用php aes 解密。php aes 加密的数据使用java解密.
java 代码中使用的加密模式: AES/CBC/PKCS5Padding
秘钥长度: 128
以及使用 SHA1PRNG 做秘钥处理.
请教下载php中如何实现.最好使用 openssl
java 代码如下:
@Slf4j
public class DefaultKeyService implements KeyService {
    private static final String SECURE_RANDOM_ALGORITHM = "SHA1PRNG";
    private static final String AES = "AES";
    private static final String AES_TRANSFORMATION = "AES/CBC/PKCS5Padding";
    private static final Integer AES_KEY_LENGTH = 128;
    private static final String RSA_TRANSFORMATION = "RSA/ECB/PKCS1Padding";
    private static final String RSA_SIGN_ALGORITHMS = "SHA512WithRSA";
    @SneakyThrows
    @Override
    public byte[] generateAesKey() {
        KeyGenerator generator = KeyGenerator.getInstance("AES");
        generator.init(AES_KEY_LENGTH, SecureRandom.getInstance(SECURE_RANDOM_ALGORITHM));
        SecretKey key = generator.generateKey();
        return key.getEncoded();
    }
    @SneakyThrows
    @Override
    public byte[] aesEncrypt(byte[] key, byte[] plaintext) {
        SecureRandom secureRandom = SecureRandom.getInstance(SECURE_RANDOM_ALGORITHM);
        secureRandom.setSeed(key);
        KeyGenerator kgen = KeyGenerator.getInstance(AES);
        kgen.init(AES_KEY_LENGTH, secureRandom);
        SecretKeySpec secretKeySpec = new SecretKeySpec(kgen.generateKey().getEncoded(), AES);
        Cipher cipher = Cipher.getInstance(AES_TRANSFORMATION);
        IvParameterSpec iv = new IvParameterSpec(key);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, iv);
        return cipher.doFinal(plaintext);
    }
    @SneakyThrows
    @Override
    public byte[] aesDecrypt(byte[] key, byte[] ciphertext) {
        SecureRandom secureRandom = SecureRandom.getInstance(SECURE_RANDOM_ALGORITHM);
        secureRandom.setSeed(key);
        KeyGenerator kgen = KeyGenerator.getInstance(AES);
        kgen.init(AES_KEY_LENGTH, secureRandom);
        SecretKeySpec secretKeySpec = new SecretKeySpec(kgen.generateKey().getEncoded(), AES);
        Cipher cipher = Cipher.getInstance(AES_TRANSFORMATION);
        IvParameterSpec iv = new IvParameterSpec(key);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, iv);
        return cipher.doFinal(ciphertext);
    }
}测试代码如下:
    @Test
    public void test() {
        DefaultKeyService service = new DefaultKeyService();
        System.out.println(new String(service.generateAesKey()));
        byte[] key = service.generateAesKey();
        byte[] c = service.aesEncrypt(key, "hello".getBytes(StandardCharsets.UTF_8));
        System.out.println(Base64.getEncoder().encodeToString(c));
        byte[] p = service.aesDecrypt(key, c);
        System.out.println(new String(p));
    }29
2022-11
19
2022-10
15
2022-09
15
2022-09
15
2022-09
29
2021-06