Mas de uma forma geral é o seguinte. Você não manda uma msg criptografada até que a pessoa te de a chave publica dela. A idéia é você dar a chave publica e dizer: "Criptografa a msg com essa chave que te mandei pois apenas eu sei decodificá-la". Em aplicações seguras acontece uma troca de chaves públicas (handshake) para que pc possa possibilitar ao outro pc uma forma de criptografar a msg de forma q apenas o dono da chave privada possa decriptar.
1 - Eu tenho a chave pública e privada
2 - Forneço ao meu cliente uma cópia da chave pública (X.509)
3 - Meu cliente criptografa algo e me envia
4 - Eu tenho a chave privada (JKS) consigo descriptografar
Mas ainda tenho uma dúvida, como vou saber que o meu cliente é realmente o meu cliente? Não sei se vc entendeu, como eu sei que ele usou a minha chave?
Um algoritmo de criptografia por si só não dá subsidios para fazer isto. É necessário usar algum protocolo de comunicação seguro. O SSL é um bom exemplo: http://en.wikipedia.org/wiki/Secure_Sockets_Layer
[edit] Desculpe, mas o exemplo acima em XML não é bem o que você quer. Isto é para assinatura de mensagem, e não criptografia de mensagem. [/edit]
Em todos os casos, o principio é que junto da mensagem, você envie alguma referencia do certificado que foi usado para criptografar a mensagem. Isto só irá funcionar se for usado algum esquema de controle dos certificados (CA ou PKI), pois se não fica difícil identificar a chave usada.
Aconselho você a estudar sobre assinatura digital também (Digital Signature).
[quote=mauriciorocha665]Chave publica = criptografa
Chave privada = descriptografa
Não tem como decriptar se você estiver sem a chave privada.[/quote]
Mauricio pelo o que vc disse se eu tenho a chave publica posso criptografar uma mensagem, pois meu ws que tenho que me conectar apenas me passaram a chave public, creio que eu mande as informações criptografadas e eles me respondem de forma normal sem criptografica, minha duvida agora é como criptografar uma mensagem depois que tenho a chave publica. Alguem pode me ajudar?
Um algoritmo de criptografia por si só não dá subsidios para fazer isto. É necessário usar algum protocolo de comunicação seguro. O SSL é um bom exemplo: http://en.wikipedia.org/wiki/Secure_Sockets_Layer
[edit] Desculpe, mas o exemplo acima em XML não é bem o que você quer. Isto é para assinatura de mensagem, e não criptografia de mensagem. [/edit]
Em todos os casos, o principio é que junto da mensagem, você envie alguma referencia do certificado que foi usado para criptografar a mensagem. Isto só irá funcionar se for usado algum esquema de controle dos certificados (CA ou PKI), pois se não fica difícil identificar a chave usada.
Aconselho você a estudar sobre assinatura digital também (Digital Signature).[/quote]
Uma foram seria que do mesmo jeito que vc tem uma chave publica e privada, o teu cliente tambem tenha.
Assim ele fornece a vc a chave publica e vc pode confirmar que é dele mesmo a chave.
Este é o conceito de certificado digital, claro que adicionado mais alguns detalhes.