架构师_程序员_码农网

K Parolayı al
Kayıt Olun

QQ登录

Başlamak için sadece bir adım

Arama
Görüntüleme:5466|Yanıt: 0
打印 上一主题 下一主题

URL güvenli Base64 kodlama, kod çözme

[kopya link]
D 跳转到指定楼层
bina sahibi
发表于 2019-11-15 14:10:48|只看该作者回帖奖励|Ters sırada göz at|Okumamodu
Base64, http iletimi için ikiliyi görünür karakterlere dönüştürebilir, ancak base64 kod dönüştürme, URL tarafından kod dönüştürülen özel karakterler olan "+", "/", "=" üretir. Bununla birlikte, base64 kod dönüştürme, URL tarafından kod dönüştürülen özel karakterler olan "+", "/", "=" üretecek ve verilerin iki tarafı arasında tutarsızlığa neden olacaktır.
URL tarafından değiştirilen "+", "/", "=" kod dönüştürülmüş karakterler olmayacak, verileri aldıktan sonra önce gönderebilir ve ardından bu karakterleri geri değiştirebilir ve ardından kodu çözebiliriz.


PHP:

/**

* URL base64 kod çözme

* '-' -> '+'

* '_' -> '/'

* dize uzunluğunun kalanı %4, tümleyen '='

* @param unknown $string

*/

public static function urlsafe_b64decode($string) {

$data = str_replace(array('-','_'),array('+','/'),$string);

$mod4 = strlen($data) % 4;

eğer ($mod4) {

$veri . = substr('====', $mod4);

}

return base64_decode($data);

}



/**

* URL base64 kodlaması

* '+' -> '-'

* '/' -> '_'

* '=' -> ''

* @param unknown $string

*/

function urlsafe_b64encode($string) {

$data = base64_encode($string);

$data = str_replace(array('+','/','='),array('-','_',''),$data); return $data; $data

return $veri;

}




OC.



#pragma - saveBase64 kodlamasındaki "-", "_" dizelerini "+", "/" ye dönüştürün, dize uzunluğunun kalan kısmı bitsel tamamlayıcının 4 katı "=" olsun

+(NSData*)safeUrlBase64Decode:(NSString*)safeUrlbase64Str

{

// '-' -> '+'

// '_' -> '/'

// Uzunluğun 4 katından az, tamamlayıcı '='

NSMutableString * base64Str = [[NSMutableString alloc]initWithString:safeUrlbase64Str];

base64Str = (NSMutableString * )[base64Str stringByReplacingOccurrencesOfString:@"-" withString:@"+"];

base64Str = (NSMutableString * )[base64Str stringByReplacingOccurrencesOfString:@"_" withString:@"/"];

NSInteger mod4 = base64Str.length % 4;

if(mod4 > 0)

[base64Str appendString:[@"====" substringToIndex:(4-mod4)]];

NSLog(@"Base64 orijinal metin: %@", base64Str);

return [GTMBase64 decodeData:[base64Str dataUsingEncoding:NSUTF8StringEncoding]];;



}



#pragma - Base64 kodlaması güvenli olmayan URL dizeleri olan +,/,= içerdiğinden, karakter değişimi yapılır

+(NSString*)safeUrlBase64Encode:(NSData*)data

{

// '+' -> '-'

// '/' -> '_'

// '=' -> ''

NSString * base64Str = [GTMBase64 stringByEncodingData:data];

NSMutableString * safeBase64Str = [[NSMutableString alloc]initWithString:base64Str];

safeBase64Str = (NSMutableString * )[safeBase64Str stringByReplacingOccurrencesOfString:@"+" withString:@"-& quot;];

safeBase64Str = (NSMutableString * )[safeBase64Str stringByReplacingOccurrencesOfString:@"/" withString:@"_& quot;];

safeBase64Str = (NSMutableString * )[safeBase64Str stringByReplacingOccurrencesOfString:@"=" withString:@"& quot;];

NSLog(@"safeBase64 encoding: %@", safeBase64Str);

safeBase64Str döndür;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

String encodeBase64 = new BASE64Encoder().encode(data);

String safeBase64Str = encodeBase64.replace('+', '-');

safeBase64Str = safeBase64Str.replace('/', '_');

safeBase64Str = safeBase64Str.replaceAll("=", "");

safeBase64Str döndür;

}


public static byte[] safeUrlBase64Decode(final String safeBase64Str){

String base64Str = safeBase64Str.replace('-', '+'); } public static byte[] safeUrlBase64Decode(final String safeBase64Str){



int mod4 = base64Str.length()%4; if(mod4 > 0) { if(base64Str.replace('_', '/'))

if(mod4 > 0){

base64Str = base64Str + "====".substring(mod4);

}

return new BASE64Decoder().decodeBuffer(base64Str);

}



Android durumunda, android.utils.Base64 bu fonksiyonla birlikte gelir:

Base64.encodeToString(encrypted, Base64.URL_SAFE|Base64.NO_WRAP); }

Base64.decode(data, Base64.URL_SAFE);; Base64.encodeToString(encrypted, Base64.URL_SAFE|Base64.




Önceki: Bir hesap kilitleme güvenlik politikası ile oynandı
Sonraki:C# bağlantı sqlserver windows ve sqlserver kimlik doğrulama iki bağlantı dizesi
NET, sadece uygulama sürecinde yayınlandı, teknik zorluklarla karşılaştı, başkalarını yanıltmayın.
Geri gönderi yapabilmeniz için giriş yapmanız gerekmektedir Giriş Yap | Kayıt Ol

İntegral kurallarının bu versiyonu


YASAL UYARI: Code Farmer tarafından yayınlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amacıyla kullanılmak üzere sınırlandırılmıştır; yukarıdaki içerikler ticari veya yasadışı amaçlarla kullanılamaz, aksi takdirde tüm sonuçlar kullanıcıların kendileri tarafından karşılanacaktır. Bu site bilgileri ağdan alınmıştır, telif hakkı anlaşmazlığının bu site ile hiçbir ilgisi yoktur. Yukarıdaki içeriği indirdikten sonraki 24 saat içinde bilgisayarınızdan tamamen kaldırmalısınız. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kaydı satın alın ve daha iyi orijinal hizmet alın. Herhangi bir ihlal varsa, bununla ilgilenmek için lütfen bizimle e-posta yoluyla iletişime geçin.

Posta To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-18 20:08

Hızlı YanıtBaşadön Listeye dön