2015-01-26 5 views
0
func (this *AdminModel) Login(v_name string, v_pwd string) (bool, error, uint) { 
    o := orm.NewOrm() 
    v_pwd_encrypt_byte := md5.Sum([]byte(v_pwd)) 
    v_pwd_encrypt := string(v_pwd_encrypt_byte[:]) 
    t_admin := Admin{Name: v_name, Pwd: v_pwd_encrypt} 
    fmt.Printf("username:%v password:%v\n", v_name, v_pwd_encrypt_byte) 
    fmt.Printf("username:%v password:%v\n", v_name, v_pwd_encrypt_byte[:]) 
    fmt.Printf("username:%v password:%v\n", v_name, v_pwd_encrypt) 
    err := o.Read(&t_admin, "Name", "Pwd") 
    if err != nil { 
     return false, err, 0 
    } else { 
     return true, nil, t_admin.Id 
    } 
} 

인쇄 결과를 변환 할 수 없습니다 :슬라이스 문자열로

username:yuhaya password:[97 22 175 237 203 11 195 16 131 147 92 28 38 47 244 201] 
username:yuhaya password:[97 22 175 237 203 11 195 16 131 147 92 28 38 47 244 201] 
username:yuhaya password:a??? 
          ???\&/?? 

왜 인쇄 결과 횡설수설의 마지막 행?

v_pwd_encrypt := string(v_pwd_encrypt_byte[:]) 

이 위치는 질문에서 벗어 났습니까?

+1

중복 가능성 [이동의 진수로 인코딩 된 MD5 해시를 얻을 방법] (http://stackoverflow.com/questions/7988543/how-to-get-hex-encoded-md5-hash-in- go) – JimB

답변

2

을 @ Ainar-G의 대답에 추가 hex.EncodeToString 그것이 반사를 포함하지 않기 때문에 그것을 할 수있는 가장 효율적인 방법입니다 또는 fmt.Sprintf과 같은 추측을 입력하십시오.

func main() { 
    sum := md5.Sum([]byte("meh")) 
    stringSum := hex.EncodeToString(sum[:]) 
    fmt.Println(stringSum) 
} 
1

md5.Sum()은 인쇄 가능한 ASCII 문자가 아닌 바이트를 반환합니다. 당신이 그 바이트의 진수 표현을보고 싶다면, 당신은 다음과 같이 fmt.Sprintf("%x", ...)를 사용할 수 있습니다

v_pwd_encrypt := fmt.Sprintf("%x", v_pwd_encrypt_byte) 
+0

@OneOfOne 편집 됨, 감사합니다. –