Je reçois une "longueur invalide pour un tableau de charcuterie de base-64". À l'intérieur de l'IF () {...} sont des variations que j'ai essayé de le faire fonctionner. Il échoue dans la première ligne sans appeler déchiffrer (...) prouvant que ce n'est pas ce problème de fonctions. Je reçois la même erreur à l'intérieur avec le premier appel de déchiffrement (...). Le dernier à l'aide de l'encodage.Aclii ... me cherchera à l'intérieur de la fonction, mais il échoue à l'intérieur de la fonction. Je reçois les informations cryptées correctes de la base de données à String Ssnum. il est de la valeur est: 4 + mfetp3tpf On m'a dit d'utiliser la méthode Convert.frombase64String () et non la méthode ASCII ... Alors pourquoi est-ce échec, comment puis-je le réparer ? p> p>
5 Réponses :
Sa valeur est la valeur: 4 + MFETP3TPF P> blockQuote>
Vous recevez cette erreur car cette valeur,
4 + mfetp3tpf code>, est en fait pas fort> base valide64. P>
est-il possible que vous manquiez simplement le caractère de remplissage requis, comme vous devez donc
4 + mfetp3tpf = code>? p>
Cela aurait un sens, dans la base de données SQL, c'est un varchar (11), donc tout '=' serait tronqué ... et cela explique également pourquoi j'ai vu tant de signes égaux parfois! J'ai vu quelque part que c'est des multiples de 4? Alors rendez mon varchar (11) à Varchar (12) .. ou plus sera la solution, non?
Oui, si votre DB tronquait, vous devez faire du terrain plus longtemps. Pas de point sur la longueur, non plus. S'il s'agit de Varchar, il n'ya aucune différence de taille entre Varchar (12) et Varchar (255) (et sur MSSQL, allant jusqu'à Varchar (4000). En effet, le champ contient un entier spécifiant la longueur du texte , plutôt que de bloquer 11 ou 12 ou 4000 caractères. Voir Wikipedia pour Spécification de base64: en.wikipedia.org/ wiki / base64
Êtes-vous certain que vous avez une chaîne de base64? BASE64 est un moyen d'encoder des données binaires dans une chaîne tout en utilisant uniquement des caractères Standard 7 bits ASCII. C'est pas em> un codage de chaîne comme ASCII et a des octets de contrôle présents. Vous avez une chaîne de base64 si vous utilisez SUITE Votre erreur (et vos données d'exemple), je suppose que vous faites pas em> avoir une chaîne de base64. Si vous devez stocker des données binaires dans la base de données, vous pouvez créer une colonne à l'aide d'un type binaire ou coder la chaîne dans la base64 à l'aide de ici, Si ce que vous avez est juste une chaîne codée ASCII, puis Votre pratique d'origine d'utiliser convert.tobase64string code> pour obtenir la valeur (qui, si vous essayez de stocker des données binaires en tant que chaîne, est votre meilleur choix)
convert.tobase64string code>. P>
de sortieData code> doit contenir les mêmes données que
INPUTDATA code>. p>
system.text.encoding.ascii.getbytes () code> est correct, mais vous devez modifier ceci pour utiliser une chaîne de base64 si vous le pouvez. P> P>
Êtes-vous sûr que la chaîne
Un seul chant est insensé - essayez base64.ru ou home1.paulschou.net/tools/xlate ou
La longueur des données de base64 doit être multiple de 4 et avec le remplissage de remplissage "= ' Vous pouvez modifier vos données en tant que données de base64 valides.
string dummyData = imgData.Trim().Replace(" ", "+"); if (dummyData.Length % 4 > 0) dummyData = dummyData.PadRight(dummyData.Length + 4 - dummyData.Length % 4, '='); byte[] byteArray = Convert.FromBase64String(dummyData);
Tu as sauvé ma journée :)
remplacer p>
octet [] temp = convert.frombase64string (SSNUM); P> blockQuote>
à ce p>
var temp = utf8encoding.utf8.getBytes (SSNUM); P> blockQuote>
S'il vous plaît ne mettez pas de choses comme "c #" dans le titre. C'est ce que sont les étiquettes.
4 + MFETP3TPF ne ressemble pas à une valeur de base valide64. Il contient 11 caractères, tandis que les longueurs de valeur de base64 doivent être multiples de 4. Avec un remplissage, il devrait ressembler à 4 + mfetp3tpf = (où = est utilisé pour le rembourrage). Vous devriez vérifier comment la valeur de base64 est générée.