طريقة C # مثل Base64String، ولكن فقط أبجدي رقمي (لا زائد أو مائل)

StackOverflow https://stackoverflow.com/questions/933503

سؤال

هل هناك طريقة C # التي تعمل مماثلة للتحويل.tobase64String ولكن لا تولد أي شيء باستثناء الإخراج الأبجدي الرقمي؟

شكرا!

هل كانت مفيدة؟

المحلول

ربما كنت تبحث في استخدام شيء مثل ترميز Base32 بعد ذلك. يوجد تشفير / فك ترميز Base32 ل C # هنا بواسطة مايكل جياغروكافو. ويستخدم مزيج من الحروف والأرقام الكبيرة.

هناك أيضا مناقشة ذات صلة على Stackoverflow هنا.

تعديل: وإذا كانت هذه فرصة، فهذا من أجل ترميز Base64 المتعلق بأسعار URL، فقط BASE64 واستبدال "+" مع "-" و "/" مع "_". لكنني أخمن، قد لا تريد ذلك لذلك.

نصائح أخرى

الإجابات قديمة بعض الشيء الآن. لصالح الباحثين في المستقبل: أفضل طريقة للتعامل مع هذا الآن في C # هي:

byte[] b; // fill your byte array somehow
string s = System.Web.HttpServerUtility.UrlTokenEncode(b);

يؤدي هذا إلى إرجاع سلسلة مشفرة من Base64 هي آمنة URL (وهو ما قلته بالفعل بعد في التعليقات على سؤالك).

يمكنك بعد ذلك فك شفرة ذلك مرة أخرى باستخدام، لقد خمنت ذلك:

byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);

يمكنك استبدال + أو مائل مع بعض السلسلة المحددة مسبقا إن أمكن.

عادة ما يستخدم البديل المشترك من BASE-64 (للاستخدام في سلسلة الاستعلام) "-" و "_" بدلا من "+" و "/". ربما قليلا من Replace(...) في كل نهاية سوف تفعل الوظيفة؟

يمكنك استخدام bitconverter.tostring () التي ستمنحك سلسلة عرافة. ومع ذلك، ستكون الأوتار الناتجة أطول من ترميز Base64.

كنت أبحث عن مثل التشفير واستخدمت https://github.com/renmengye/base62-csharp/

إنه تشفير / فك تشفير في "0123456789ABCDEFGHIJCKLMNOPQRSTUXYZAGDEFGHIJCKLMNOPQRSTUVWXYZ".

أنا فقط ملفوفة طرقها مع

System.Text.Encoding.UTF8.GetBytes(plainText); وSystem.Text.Encoding.UTF8.GetString(decoded);

يدعو للسماح لها بالعمل بسهولة مع سلاسل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top