OPからさらに明確にした後、私は主にコメントを回答に変換しています。
Stepic は、情報を画像のピクセルに直接埋め込みます。jpeg などの非可逆形式では、これらのピクセルの一部が変更されるため、シークレットが破壊されます。このアプリケーションに適しているのは、bmp や png などの可逆形式のみです。
あなたの友人があなたのメッセージをエンコードし、あなたはステガノグラフィック画像の受信者であるため、このプロセスが間違っている場所が 2 つあります。あなたの友人が画像を jpeg に保存したか (プログラムで許可されているかどうかはドキュメントから明らかではありません)、または彼はいい子でしたが、ウェブサイトにアップロードすると、ウェブサイトが jpeg に再エンコードされました。
彼に尋ねるか、非 jpeg 画像を Web サイトにアップロードし、それをダウンロードして 2 つのファイルの違いを確認する必要があります。次の python スクリプトは、2 つのファイルがバイトごとに同じである場合に true を出力します。
a = open('filename before upload', 'rb').read()
b = open('filename after download', 'rb').read()
print a == b
画像が jpeg で保存されている場合は、友人に適切な形式を使用するように伝えてください。アップロード中に画像が変更された場合は、画像を破壊するような方法で画像を再エンコードしない別のアップロード サービスを使用する必要があります。あなたの秘密がそのような変更に耐えることができるステガノグラフィーアルゴリズム。これはロバスト ステガノグラフィと呼ばれ、そのようなアルゴリズムを説明している文献はたくさんありますが、そのソース コードはすぐには見つからないかもしれません。
秘密を jpeg 画像に埋め込むことに特に関心がある場合は、jpeg ステガノグラフィーを探す必要があります。
ただし、そのようなツールまたはソフトウェアを推奨することは、FAQ に従ってトピック外と見なされます。