软件保护一般分为软加密和硬加密;硬加密一般俗称加密狗或加密锁。"加密狗"是一种插在计算机USB口或并口上的软硬件结合的加密产品,早期多为并口形式,绝大部分都是USB口形式。一般都有几十或几百字节的非易失性存储空间可供读写,较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换(即对软件狗进行读写),来检查软件狗是否插在接口上;或者直接用软件狗附带的工具加密自己EXE文件(俗称"包壳")。这样,软件开发者可以在软件中设置多处软件锁,利用软件狗做为钥匙来打开这些锁;如果没插软件狗或软件狗不对应,软件将不能正常执行。