Je travaille sur un useragent qui se connecte à teamcity et j'essaye de déplacer le cryptage du mot de passe de js à C#.RSA Encryption: déplacement du code de js vers C#
la section appelée rsa.js et encrypt.js sont importants. Ils font un appel de fonction avec
rsa.setPublic(publicKey,"10001");
L'exposant ressemble à son un nombre hexadécimal x10001 qui est 65537 Base10 pour autant que je peux dire
Notez le compte ne fait pas partie ci-dessous Le site de démonstration de teamcity
Ce test valide si le texte crypté est égal au texte en clair crypté avec la clé publique.
[Test]
public void should_be_able_to_encode_a_string() {
string public_key = "00b46e5cd2f8671ebf2705fd9553137da082b2dd3dbfa06f254cdfeb260fb21bc2c37a882de2924d7dd4c61eb81368216dfea7df718488b000afe7120f3bbbe5b276ac7f2dd52bd28445a9be065bd19dab1f177e0acc035be4c6ccd623c1de7724356f9d6e0b703d01583ebc4467d8454a97928b5c6d0ba3f09f2f8131cc7095d9";
string expected = "1ae1d5b745776f72172b5753665f5df65fc4baec5dd4ea17d43e11d07f10425b3e3164b0c2ba611c72559dc2b00149f4ff5a9649b1d050ca6a5e2ec5d96b787212874ab5790922528a9d7523ab4fe3a002e8f3b66cab6e935ad900805cf1a98dc6fcb5293c7f808917fd9015ba3fea1d59e533f2bdd10471732cccd87eda71b1";
string data = "scott.cowan";
string actual = new EncryptionHelper().Encrypt(public_key, data);
Assert.AreEqual(expected,actual);
}
jusqu'à présent la mise en œuvre ressemble
public string Encrypt(string public_key, string data)
{
rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(String.Format("<RSAKeyValue>{0}</RSAKeyValue>",public_key));
byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data);
byte[] cipherbytes = rsa.Encrypt(plainbytes,false);
return Convert.ToBase64String(cipherbytes);
}
mais se plaint avec
System.Security.Cryptography.CryptographicException
Message: Input string does not contain a valid encoding of the 'RSA' 'Modulus' parameter.
Merci d'aide en fera un Noël
très joyeux Edit: regards comme mon test est erroné depuis un différent encryptedPassword est généré wi th chaque fois tête de série
Réponse: Je me suis tourné sur l'accès invité, qui contourne ce problème, mais je voudrais encore résoudre
ok cela compile, une fois que le résultat est converti en hexadécimal, il ne correspond pas aux exposants que j'utilisais. Ils utilisent x10001 qui est 65537 base10 mais cela ne donne pas le résultat attendu. le texte codé est à peu près la même longueur que le prévu –