Ubuntu マシンで実行されている unix ユーザー パスワードをリセットする Django アプリケーションがありますが、私の開発環境は OS X であり、次の厄介な状況に遭遇しました。
OS X:
>>> import crypt
>>> crypt.crypt('test','$1$VFvON1xK$')
'$1SoNol0Ye6Xk'
Linux:
>>> import crypt
>>> crypt.crypt('test','$1$VFvON1xK$')
'$1$VFvON1xK$SboCDZGBieKF1ns2GBfY50'
の pydoc を読んだところcrypt
、OS 固有のcrypt
実装を使用していることがわかったので、両方のシステムで次のコードをテストし、Python と同じ結果を得ました。
#include <unistd.h>
int main() {
char *des = crypt("test","$1$VFvON1xK$ls4Zz4XTEuVI.1PnYm28.1");
puts(des);
}
crypt()
OS X の実装で Linux と同じ結果を生成するにはどうすればよいcrypt()
ですか?
そして、それが Python 実装でカバーされていないのはなぜですか (クロスプラットフォーム展開のそのようなケースから私が期待するように)?