crypt非常容易用cgo包装,例如
package mainimport ( "fmt" "unsafe")// #cgo LDFLAGS: -lcrypt// #define _GNU_SOURCE// #include <crypt.h>// #include <stdlib.h>import "C"// crypt wraps C library crypt_rfunc crypt(key, salt string) string { data:= C.struct_crypt_data{} ckey := C.CString(key) csalt := C.CString(salt) out := C.GoString(C.crypt_r(ckey, csalt, &data)) C.free(unsafe.Pointer(ckey)) C.free(unsafe.Pointer(csalt)) return out}func main() { fmt.Println(crypt("abcdefg", "aa"))}运行时会产生这个
aaTcvO819w3js
与python相同
crypt.crypt
>>> from crypt import crypt>>> crypt("abcdefg","aa")'aaTcvO819w3js'>>>(已更新,以释放CStrings-感谢@ james-henstridge)



