2017-01-25 6 views
1

У меня есть строка с кодировкой URL-кода (созданная Perl), которую мне нужно декодировать в Go. Вот две программы, в Perl и в Go - Perl отлично работают, но Go вызывает ошибку. Я не могу этого понять. Пожалуйста, помогите!Как URL Безопасный декодирование Base64 в Go, закодированный в Perl?

=== Perl код - работает отлично код

#!/usr/bin/env perl 
use common::sense; 
use MIME::Base64::URLSafe; 

my $str = 'Oi6cQzmolrUhkgHsNehtj9p_OsasB_6CIeygK0owoxTsXCtVWyQi-7DXxIJiaV-kSc6PGNC6uNz5V0A9QOGCaeCy6PolQY2Lt_v4JM42VEbsuML8guHfMO0ydvbXVcCR-yLfkz5CO0f-P1hVqxJBD8qPvk1t1DRzqmHP41DSfIm_WzlhtITnd_Wjt6E3CFS78HL3XjJlM-QBW9Z_GZgic8y7TlOWFzCRUf2Q-EZschrDi9l81E93XBNKe8knInL_uFN_oK_ob7fjnkGJO54RNn3coVsrzuIoNa6AI6oWLfsaJ5NyQYor5P0'; 

say urlsafe_b64decode($str); 

=== Go - поднимается ошибку

package main 

import (
    b64 "encoding/base64" 
    "fmt" 
) 

func main() { 
    str := "Oi6cQzmolrUhkgHsNehtj9p_OsasB_6CIeygK0owoxTsXCtVWyQi-7DXxIJiaV-kSc6PGNC6uNz5V0A9QOGCaeCy6PolQY2Lt_v4JM42VEbsuML8guHfMO0ydvbXVcCR-yLfkz5CO0f-P1hVqxJBD8qPvk1t1DRzqmHP41DSfIm_WzlhtITnd_Wjt6E3CFS78HL3XjJlM-QBW9Z_GZgic8y7TlOWFzCRUf2Q-EZschrDi9l81E93XBNKe8knInL_uFN_oK_ob7fjnkGJO54RNn3coVsrzuIoNa6AI6oWLfsaJ5NyQYor5P0" 

    fmt.Println("source B64:", str) 
    _, err := b64.URLEncoding.DecodeString(str) 

    if err != nil { 
     fmt.Println("error b64:", err) 
    } 
} 

=== END

Как расшифровывать возвращает усеченного результат невозможно использовать его на следующем шаге.

ответ

1

Используйте RawURLEncoding, когда нет обивка:

_, err := b64.RawURLEncoding.DecodeString(str) 
+0

Похоже, рабочий раствор. Спасибо! – Demiurg