서버와 Android 클라이언트 애플리케이션을 모두 작성하고 있습니다. 안드로이드 클라이언트는 서버에 측정 값을 보냅니다. 데이터 무결성을 보장하기 위해 디지털 서명이 각 측정에 추가됩니다.아직 구현되지 않았습니다. DSA 공개 키
Gson 호환이 필요하기 때문에 공개 키 자체를 저장할 수 없습니다. 대신 G, P, Q 및 Y 요인을 저장합니다.
다음은 요청 클래스의 코드 조각입니다 :
public PublicKey getPublicKey() {
try {
DSAPublicKeySpec keySpec = new DSAPublicKeySpec(publicKeyY, publicKeyP,
publicKeyQ, publicKeyG);
KeyFactory fact = KeyFactory.getInstance("DSA");
PublicKey pubKey = fact.generatePublic(keySpec); // A
return pubKey;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public void setPublicKey(PublicKey publicKey) {
try {
KeyFactory fact = KeyFactory.getInstance("DSA");
DSAPublicKeySpec pub = fact.getKeySpec(publicKey, DSAPublicKeySpec.class); // B
publicKeyG = pub.getG();
publicKeyP = pub.getP();
publicKeyQ = pub.getQ();
publicKeyY = pub.getY();
} catch (Exception e) {
e.printStackTrace();
}
}
생성자는 setPublicKey-방법을 사용합니다. 클라이언트 측에서 이러한 요청을 만들어 서버에 보내면 둘 다 예외가 발생합니다. 클라이언트에
:java.lang.RuntimeException: not implemented yet DSA Public Key
y: 2f9286201b266f38d682e99814612f7d37c575d3a210de114bdf02092f4a835109f28a590cfc568bb6525d59b8275fe791f3ddf20e85df44fd2e8622289f6dbc27c73d31d1769feae19573df22a9ca8ef80a9f7230b0b4a2671cc03fdb2788b55b4e9a68a7a5a93a214cc5aa39ccb5155a13354870d45a38760a80fd34333073
class java.security.spec.DSAPublicKeySpec
at org.bouncycastle.jce.provider.JDKKeyFactory.engineGetKeySpec(JDKKeyFactory.java:148)
at java.security.KeyFactory.getKeySpec(KeyFactory.java:210)
I는 서버에서 B
로 표시 규칙에서 스택 추적 점에서
다음 일 :
java.lang.NullPointerException
at sun.security.provider.DSAPublicKey.<init>(DSAPublicKey.java:74)
at sun.security.provider.DSAPublicKeyImpl.<init>(DSAPublicKeyImpl.java:46)
at sun.security.provider.DSAKeyFactory.engineGeneratePublic(DSAKeyFactory.java:86)
at java.security.KeyFactory.generatePublic(KeyFactory.java:304)
at sensserve.protocol.StartSessionRequest.getPublicKey(StartSessionRequest.java:66)
이 Nextly 규칙 A를 가리키는
내가 잘못한 점과 이러한 메시지의 의미에 대해서는 단서가 없습니다. 어떻게 해결할 수 있습니까? 내가 뭘 잘못하고 있는지 말해 줄 수있는 사람?
고마워요.
의견을 보내 주셔서 감사합니다. 공개 키를 교환하는 데 도움이되었습니다. 그러나 검증은 여전히 작동하지 않습니다. 나는 네 마지막 문장이 그 일과 관련이 있다고 생각해. 나는 그것에 대해 별도의 주제를 만들었 : http://stackoverflow.com/questions/10601507/bouncycastle-on-the-server-side-with-android-phones-as-clients 당신도 잘보시겠습니까? – gleerman