web-gelistirme-sc.com

Bayt dizisini base64 string java'ya dönüştürme

byte[] kullanarak bir org.Apache.commons.codec.binary.Base64 - base64 dizesini dönüştürmeye çalışıyorum. Bunun için benim Java kodum şöyle görünüyor:

 base64String = Base64.encodeBase64URLSafeString(myByteArray);

Ama gördüğüm şey oluşturulan base64 dizgisindeki geçersiz karakterler.ScreenShot

Neden bu ____ satırlarını oluşturulan base64 String'imde görüyorum? Geçerli bir dize mi? Oluşturulan dizenin uzunluğunun dörde bölünebilir olduğuna dikkat edin.

8
Suave Nti

encodeBase64String kullanmak yerine encodeBase64URLSafeString yöntemini denediniz mi?

encodeBase64URLSafeString:

Base64 algoritmasının URL güvenli bir varyasyonunu kullanarak ikili verileri kodlar ancak çıktıyı küçültmez. URL güvenli varyasyonu - ve + karakterleri yerine - ve _ değerlerini yayar.

encodeBase64String:

Base64 algoritmasını kullanarak ikili verileri kodlar ancak çıktıyı küçültmez. NOT: Bu yöntemin davranışını çok satırlı öbekten (commons-codec-1.4) tek satırlık öbeklenmeden (commons-codec-1.5) değiştirdik.

kaynak: org.Apache.commons.codec.binary.Base64 javadoc

2

Kullanım

String sCert = javax.xml.bind.DatatypeConverter.printBase64Binary(pk); 
1
Taran

Bu yardımcı olabilir

Sun.misc.BASE64Encoder encoder = new Sun.misc.BASE64Encoder();
encoder.encode(byteArray);
1
Koti

(en az) iki base64 çeşidine sahipseniz, alfanümerik karakterlerin yanı sıra '+' ve '/' işaretini kullanan orijinal ve "-" ve "_" içeriklerini kullanarak "url safe" olan bir URL'ye eklenebilir (veya bir dosya adı, btw olarak kullanılabilir).

"URL güvenli mod" haline getirilmiş bir base64 kodlayıcı kullanıyormuşsunuz gibi görünüyor.

Apache'nin URLSafeString () için javadoc

Oh, ve '_', base64 alfabesinin son karakteri olan, "____" dizelerini görmek, 0xffffff parçalarını kodladığınız anlamına gelir, tıpkı "AAAAAA" ifadesini görmek gibi, bir çok ardışık sıfırın olduğu anlamına gelir.

Bunun normal bir durum olduğuna ikna olmak istiyorsanız, en sevdiğiniz onaltılık damperli kamyon/editörü seçin ve ikili girişinizin nasıl olduğunu kontrol edin.

0
PypeBros