ios Epub加密及解密閱讀的一種實現(xiàn)方式

非常感謝大家利用自己寶貴的時間來閱讀我的文章 , ?最近做了一個用到Epub閱讀的項目,下面跟大家分享一下開發(fā)心得,希望能給你的開發(fā)過程帶來一些幫助。喜歡的可以關注一下我的簡書、我的博客????

關于epub閱讀器,我是在github上找了個叫XDSReader的開源閱讀器做了些修改,研究了一下他的源碼,修改了些BUG,包括筆記的刪除,書簽章節(jié)名稱錯亂,首頁點擊第一章崩潰等小問題,具體都是在什么地方做的修改都忘得差不多了,這篇文章的重點不在這,也就不再多說了。

因為某些不知名的保密原因,公司不允許直接下載原始epub文件,讓研究一下加密方式,做了一天嘗試,感覺最好的方式就是對epub中所有的xhtml文件內容進行AES128加密,客戶端下載加密后的epub文件,在閱讀的過程中對xhtml文件進行解密。

具體的實現(xiàn)方式是后臺開發(fā)人員找了個第三方,具體什么第三方我不清楚,能實現(xiàn)我想要的功能就行了,就是可以遍歷epub里的所有文件,針對xhtml文件類型進行IO流的AES128加密,加密完成后輸出加密后的epub文件,客戶端這邊下載完成后調用XDSReader進行epub閱讀,當然,要對他的源碼做些修改,修改之前先跟蹤XDSReader解析epub文件過程

1、解析opf文件,獲取epub基本信息

2、解析ncx文件,獲取章節(jié)信息

3、通過獲取的章節(jié)列表信息加載解析對應的xhtml文件

4、使用DTCoreText進行富文本展示

我們只需要在第三步的時候改下解析xhtml的代碼,對xhtml文件的內容做次AES128解密就行了,具體代碼位置在XDSChapterModel.m文件里的attrubutedStringForSnippet方法里,不管用什么閱讀器,epub的解析應該是大同小異的。

NSString?*OEBPSUrl?=?CURRENT_BOOK_MODEL.bookBasicInfo.OEBPSUrl;??

OEBPSUrl?=?[APP_SANDBOX_DOCUMENT_PATH?stringByAppendingString:OEBPSUrl];??

NSString?*fileName?=?[NSString?stringWithFormat:@"%@/%@",?OEBPSUrl,?self.chapterSrc];??

? //?Load?HTML?data??

????????readmePath?=?fileName;?????

html?=?[NSString?stringWithContentsOfFile:readmePath?encoding:NSUTF8StringEncoding?error:NULL];??

html?=?[NSString?stringWithContentsOfFile:readmePath?encoding:NSUTF8StringEncoding?error:NULL];??

替換為

NSData?*data?=?[NSData?dataWithContentsOfFile:readmePath];??

NSData?*DecryptData?=?[data?AES128DecryptWithKey:@"AES128密匙字符串"?iv:@"AES128偏移量字符串"];??

html?=[[NSString?alloc]?initWithData:DecryptData?encoding:NSUTF8StringEncoding];??

這樣就可以實現(xiàn)epub文件的加密啦,注意,對epub加密的時候只加密xhtml格式的文件就行了,要不解析其他文件的代碼也要做相應修改,麻煩且容易出問題,只對xhtml文件加密可以在實現(xiàn)加密的基礎上減輕很大的工作量,還是可取的,OK這是我對epub加密實現(xiàn)的一知半解,如果有其他見解,歡迎討論交流~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.ios高性能編程 (1).內層 最小的內層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結構(3).初始化時...
    歐辰_OSR閱讀 30,187評論 8 265
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 我今天又來讀SDWebImage了。前幾天讀了MBProgressHUD,SDWebImage比MBProgres...
    charlotte2018閱讀 355評論 0 3
  • 陳忠康,1968年出生于浙江永嘉。1991年畢業(yè)于浙江美術學院(今中國美術學院)國畫系書法專業(yè)。為中國書法家協(xié)會會...
    一葦書屋閱讀 913評論 0 0
  • 在《端午金曲撈》中首次聽到這首張碧晨和黎明合唱的《我可以忘記你》,便一發(fā)不可收拾的單曲循環(huán)。 這是黎明離婚后首支作...
    月之微光閱讀 2,891評論 1 4

友情鏈接更多精彩內容