Javaでcsvファイルのpgp暗号化を行う機能を作成しています。
しかし、公開鍵が見つかりません(No public key)というエラーが出力され、暗号化することができません。
解決方法等ご教示いただけますと大変助かります。よろしくお願いします。
エラーメッセージ
gpg: 公開鍵名: skipped: No public key gpg: "csvファイルのフルパス": encryption failed: No public key
該当のソースコード
一部エラー処理は省略しています。
Java
1 try{ 2 List<String> list = new ArrayList<String>(); 3 list.add("gpg"); 4 list.add("--batch"); 5 list.add("-e"); 6 list.add("-r"); 7 list.add(公開鍵名); 8 list.add("--yes"); 9 list.add("\"" + filePath + fileNm + "\""); 10 ProcessBuilder pb = new ProcessBuilder(list); 11 Process process = pb.start(); 12 int ret =process.waitFor(); 13 14 if(ret != 0){ 15 エラー内容の出力 16 } 17 }catch(Exception e){ 18 } 19//実行されるコマンド 20//gpg --batch -e -r 公開鍵名 --yes "csvのフルパス"
gpg公開鍵名とソースで使用している公開鍵名は一致しています。
信頼度設定も行っています。(5で設定しました)
(以下の結果よりコピペして使用しています。前後の空白等も確認しました。)
gpg
1# gpg -k 2/root/.gnupg/pubring.gpg 3------------------------ 4pub 2048R/A9A774C4 2021-01-05 5uid 公開鍵名 6sub 2048R/7252F9DC 2021-01-05 7
試したこと
・Windows10環境ではJavaからの暗号化に成功しました。
・Linuxで、Java内でProcessBuilder に渡されるlistの内容をそのままコマンドプロンプトにて実行しましたが、これは暗号化に成功しました。
追記
2021/01/22
・sudoを追加してみる。
→sudo: no tty present and no askpass program specified
うまく解決できず。社内検証用なのであまり自由にいじれず。。。
・gpg暗号化をsh化し、javaからshを呼ぶ
→/usr/bin/shが見つからないと言われる
回答1件
あなたの回答
tips
プレビュー