菜鸟教程小白 发表于 2022-12-12 22:56:20

ios - 在 iOS 中使用 commoncrypto 解密 mp3 文件(mp3 文件使用 openssl 加密)


                                            <p><p>我有一个加密的 MP3 文件。该文件使用以下 openssl 方法加密</p>

<pre><code>openssl enc -e -aes-128-cbc -K 00ff349830193845af43984758690213 -p -iv 0 -nosalt -ininput.mp3 -out output.mp3
</code></pre>

<p>然后我尝试在我的 ios 应用程序中解密文件,如下所示,</p>

<pre><code>NSString *resourceDocPath = [ initWithString:[ bundlePath]] ;
NSString *filePath = ;
NSData *key = [@&#34;00ff349830193845af43984758690213&#34; dataUsingEncoding:NSUTF8StringEncoding];
NSData *iv = [@&#34;00000000000000000000000000000000&#34; dataUsingEncoding:NSUTF8StringEncoding];
NSData *fileData = [ initWithContentsOfFile:filePath];
NSData *decryptData;

CCCryptorStatus ccStatus   = kCCSuccess;
size_t          cryptBytes = 0;    // Number of bytes moved to buffer.
NSMutableData*dataOut    = ;

ccStatus = CCCrypt(kCCDecrypt,
                   kCCAlgorithmAES128,
                   kSecPaddingNone,
                   key.bytes,
                   kCCKeySizeAES128,
                   iv.bytes,
                   fileData.bytes,
                   fileData.length,
                   dataOut.mutableBytes,
                   dataOut.length,
                   &amp;cryptBytes);

if (ccStatus != kCCSuccess) {
    NSLog(@&#34;CCCrypt status: %d&#34;, ccStatus);
}   
dataOut.length = cryptBytes;
decryptData = dataOut;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = ;
NSString *appFile = ;
;
NSLog(@&#34;%@&#34;,documentsDirectory);
</code></pre>

<p>现在我在文档目录中有解密的 MP3 文件,但它没有播放,实际上它是一个垃圾输出。请建议我一种获得所需输出的方法。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我用过<a href="https://github.com/rnapier/RNCryptor" rel="noreferrer noopener nofollow">https://github.com/rnapier/RNCryptor</a>用于解密。 </p>

<pre><code>#import &#34;ViewController.h&#34;
#import &lt;Security/Security.h&gt;
#import &lt;MediaPlayer/MediaPlayer.h&gt;
#import &#34;RNEncryptor.h&#34;
#import &#34;RNDecryptor.h&#34;
#import &#34;RNOpenSSLEncryptor.h&#34;
#import &#34;RNOpenSSLDecryptor.h&#34;

NSString *resourceDocPath = [ initWithString:[ bundlePath]] ;
NSString *filePath1 = ; //The encrypted mp3 file (with aPassword)
NSData *passEncryptedData =[ initWithContentsOfFile:filePath1];
NSError *error;   
NSString *pass = @&#34;aPassword&#34;;   
NSData *dataDecrypted = [RNOpenSSLDecryptor decryptData:passEncryptedData
                                           withSettings:kRNCryptorAES256Settings
                                             password:pass
                                                error:&amp;error];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = ;
NSString *appFile = ; //The Decrypted file saved here
;
NSLog(@&#34;%@&#34;,documentsDirectory);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 iOS 中使用 commoncrypto 解密 mp3 文件(mp3 文件使用 openssl 加密),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/12670914/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/12670914/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 iOS 中使用 commoncrypto 解密 mp3 文件(mp3 文件使用 openssl 加密)