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